写点什么

基于华为开发者空间,体验鲲鹏 DevKit 之 Python 字符串拼接系统性能分析

  • 2025-06-06
    贵州
  • 本文字数:2372 字

    阅读完需:约 8 分钟

基于华为开发者空间,体验鲲鹏DevKit之Python字符串拼接系统性能分析

本文摘自华为开发者空间案例中心案例《鲲鹏DevKit之Python字符串拼接系统性能分析》

一、概述

1.实验介绍

鲲鹏 DevKit 系统性能分析是针对基于鲲鹏的服务器的性能分析工具,能收集服务器的处理器硬件、操作系统、进程/线程、函数等各层次的性能数据,分析出系统性能指标,定位到系统瓶颈点及热点函数,给出优化建议。该工具可以辅助用户快速定位和处理软件性能问题。


本实验选择 Python 进行字符串拼接性能分析作为示例,并借助开发者空间云主机提供的鲲鹏沙箱资源进行安装、配置,直观地展示 Devkit 中系统性能分析能力在实际应用开发中为开发者带来的便利。

2. 实验对象

  • 企业

  • 个人开发者

  • 高校学生

3. 实验时间

本次实验总时长预计 40 分钟。

4. 实验流程


说明:


  1. 自动部署鲲鹏云服务器;

  2. 安装鲲鹏 Devkit 插件;

  3. 通过浏览器访问,添加 IP 节点,以配置在线分析环境;

  4. 安装 Python3;

  5. 使用 Python3 命令执行代码;

  6. 在线分析,通过全景分析和进程分析查看 CPU 负载和使用率情况进行对比分析;

  7. 修改执行命令,再次分析。


二、鲲鹏 DevKit 之 Python 字符串拼接系统性能分析

1. 自动部署鲲鹏云服务器

在云主机桌面右键选择 Open Terminal Here,打开命令终端窗口。



执行自动部署命令如下,该命令会自动部署鲲鹏云服务器。


hcd deploy --password abcd@1234 --time 3600
复制代码


  • --password 待部署项目所在 ECS 的 root 用户密码(至少 8 个字符),如果不修改部署命令,鲲鹏云服务器密码就是 abcd@1234。

  • --time 待部署资源的保留期(单位为秒,至少 600 秒,默认 600 秒)。当前实验预估需要 40 分钟,可以配置 time 为 1 小时保留期。



看到“application is running, service addr: https://xxx.xxx.xxx.xxx:8084”表示部署成功,记录部署远端服务器公网 IP,如截图中对应的就是:115.175.25.9 。



自动部署的鲲鹏云务器已经预装了鲲鹏 DevKit 插件,该案例会用到 DevKit 的系统性能分析能力。

2. 添加 IP 节点

在云主机桌面右键选择 Open Terminal Here,打开命令终端窗口。



通过 ssh 连接云服务器,然后输入“密码”,出现“Welcome to XXX”代表连接成功。


ssh root@云主机IP
复制代码


登录鲲鹏云服务器



查询鲲鹏云服务器内网 IP 地址。


ifconfig
复制代码



通过浏览器访问鲲鹏云服务器,添加目标节点,以配置在线分析环境。


打开浏览器,输入“https://xxx.xxx.xxx.xxx:8086”(IP 为 2.1 自动部署的鲲鹏云服务器 IP),如果提示风险,点击接受并继续。



首次登录需要设置密码,设置后登录。



登录完成后添加节点:点击“调优”,选择通用分析下面的“新建”按钮,右边窗口选择“管理节点”。



进入管理界面后,点击“添加节点”,勾选协议,弹窗节点 IP 输入上面 ifconfig 查询到的鲲鹏云服务器内网 IP,输入“密码”,点击“确定”。



选择“继续添加”。



添加成功如下图所示,点击左上角“DevKit Tools”返回上一级菜单。



上一级菜单如下图所示,可以看到节点添加成功。


3. 执行 Python 代码

回到云主机桌面打开终端,创建 concatenate_string.py 文件。


vim concatenate_string.py
复制代码



回车进入,点击“i”进入编辑模式。


concatenate_string.py 代码如下(concatenate_string.py 代码仓地址):


import sys
BASE_STRING = "Hello world"LOOP_TIMES = 100000000STRING_LIST = [BASE_STRING] * LOOP_TIMES
def string_plus(): new_string = '' for string in STRING_LIST: new_string += string print(len(new_string))
def string_join(): new_string = ''.join(STRING_LIST) print(len(new_string))
def main(): function_map = { 'string_plus': string_plus, 'string_join': string_join, } print(sys.argv) _, function = sys.argv if function in function_map: function_map[function]() else: print('function {} not exist'.format(function)) if __name__ == "__main__": main()
复制代码


代码复制完毕,键盘点击“esc”,然后输入“:wq”保存退出。



执行以下指令,可以代码看到执行成功,该代码中使用“+”在 for 循环中拼接字符串,运行时间为 10s。


time python3 concatenate_string.py string_plus
复制代码


4. 在线分析

4.1 创建全景分析任务

回到浏览器,可以看到 2.2 添加的节点界面。


分析类型选择“全景分析”,采样类型全部勾选,采样时长设置为“20”,其他默认,点击“确定”,跳出弹窗点击“确定”。



出现如下界面时,点击“开始分析”,等待分析进度条完成。



采样完成后,点击“系统性能”,打开“CPU 负载”,可以看到数据显示 CPU 负载值。


4.2 创建进程线程分析任务

回到执行 Python 终端,如连接超时重新连接即可。再次执行 Python3 命令。


time python3 concatenate_string.py string_plus
复制代码



执行成功返回浏览器。点击左上角系统性能分析后的新建任务图标,选择“通用分析”。



分析类型选择“进程分析”,采样类型全部勾选,采样时长设置为“20”,其他默认,点击“确定”,跳出弹窗点击“确定”



出现如下界面时,点击“开始分析”。等待分析进度条完成。



分析完成后查看进程性能数据,CPU 使用率也比其他大部分进程高。


5. 修改执行命令并再次分析

回到 Python 终端,将执行命令进行修改,使用 join 拼接字符串,执行如下命令,可以看到运行时间变为 3s。


time python3 concatenate_string.py string_join
复制代码



再次创建全景分析,参数与 2.4.1 保持一致,分析成功后查看结果。



再次创建进程分析,参数与 2.4.2 保持一致,分析成功后查看结果。



时间对比:


总结:


使用鲲鹏 DevKit 系统性能分析工具查看性能数据,通过系统全景分析和进程分析的数据采集,可以分析出性能瓶颈点,Python 中的 string 是不可变对象,循环中使用+进行大量字符串拼接时,会频繁的进行内存的申请、分配以及字符串的复制,导致性能低下。将代码进行修改,使用 join 拼接字符串,执行时间减少,性能明显提升。


至此本次实验全部内容完成。


关注“华为云开发者联盟”,了解更多技术动态。


更多开发者空间技术干货与活动请关注:开发者空间官网 开发者空间案例中心

用户头像

提供全面深入的云计算技术干货 2020-07-14 加入

生于云,长于云,让开发者成为决定性力量

评论

发布
暂无评论
基于华为开发者空间,体验鲲鹏DevKit之Python字符串拼接系统性能分析_Python_华为云开发者联盟_InfoQ写作社区