性能分析过程
前提条件
- 服务器和操作系统正常运行。
- PC端已经安装SSH远程登录工具。
- 目标环境上鲲鹏DevKit系统性能分析工具已经安装完成,并正常运行。
- 目标环境上已安装Python 3。
操作步骤
- Python3执行demo。
该接口中使用“+”在for循环中拼接字符串,该demo耗时约11s。
图1 执行demo
- 配置Python3目录至应用程序路径配置中。
由于Python3不在工具默认的路径中,首先配置Python3的目录到应用程序路径配置项中或将应用移至/opt或/home目录下。
图2 系统设置
- 新建热点函数分析任务。
单击系统性能分析后面的
,选择“通用分析”,打开新建任务页面,选择“热点函数分析”,参数配置完成后单击“确认”启动热点函数分析任务。未特别说明的参数请使用默认值。图3 新建热点函数分析任务
表1 任务配置参数说明 参数
说明
分析类型
热点函数分析。
分析对象
应用。
模式
Launch application。
应用运行用户
配置demo可运行用户的账号和密码。
应用路径
/usr/bin/python3。
应用参数
/opt/testdemo/concatenate_string.py string_plus。
采样时长 (s)
10秒。
dwarf
开启。
C/C++ 源文件目录
用于采集过程时关联源码。本示例使用/opt/testdemo/。
- 查看热点函数分析结果。
查看总览页面的Top 30热点调用栈,其中memcpy实现内存中复制,__libc_realloc即malloc函数,用来实现内存的申请及分配,它们消耗了较多的CPU资源。
图4 总览
- 性能瓶颈分析。
综合以上的分析,Python中的string是不可变对象,循环中使用+进行大量字符串拼接时,会频繁进行内存申请、分配以及字符串的复制,导致性能低下。