使用DevEco Device Tool 2.1 Beta1的可视化分析来优化程序 原创
工欲善其事,必先利其器。 DevEco Device Tool2.1 Beta1的可视化分析功能,可以通过可视化的功能展示开发板上运行的应用所占系统资源和内存资源的信息,从而及时调整各任务的内存和资源分配,实现程序和代码优化。这次就以“Windows下的Hi3861一键式编译烧录:中断方式控制LED灯(一)”(基于小熊牌 BEARPI HM.Nano开发板)(https://harmonyos.51cto.com/posts/4437)文中代码为例,做一次可视化分析和内存优化。
首先对前文程序做可视化分析,可视化分析的简要步骤:(参考https://harmonyos.51cto.com/posts/4342)
1. 复制“app_demo_sysinfo.c“和“app_demo_sysinfo.h“两个文件到程序iothardware的目录下。
2.修改iothardware目录下BUILD.gn文件,sources下添加“app_demo_sysinfo.c”, include_dirs下添加“app_demo_sysinfo.h”头文件相对路径"//applications/sample/wifi-iot/app/iothardware"。
3.主程序“led_example02.c”中添加头文件 #include "app_demo_sysinfo.h".
4.主程序“led_example02.c”入口函数中增加可视化任务调用 app_demo_heap_task();
完成后在Windows环境下保存,编译,烧录,开发板重启后,主页下点击“Profiling”,点击“Live capture”,继续“Capture”,就进入DevEco Device Tool 2.1 Beta1的可视化分析页面,点击“Stack”,可以看到各线程的内存可视化。我们关注的“LedTask”线程内存占用388字节,占比为75.8%,属于正常,如下图。
很多时候, 为了程序的调试方便,我们会在程序关键位置增加一些打印信息,这样做,相应内存占用会增加。如下图,在程序中增加一些信息打印。
然后对增加打印信息后的程序重新做可视化分许,结果“LedTask”内存占比过高,达到91.4%,内存不足,需要进行优化。
最后调整内存大小。原来程序的Led_Task分配内存为512,将其调整为1024后,再次做可视化分析,“LedTask”的内存占比为64.1%,恢复正常。如图
DevEco Device Tool 2.1 Beta1的可视化分析还有更多的功能,希望广大鸿蒙开发者勇于探索,乐于分享。
本文源代码见附件,可以通过修改Led_Task的内存大小,直接体验可视化分析优化内存的功能。
👍👍👍