前言
在我们软件开发,或者游戏开发后期,进行性能分析的时候,都需要在分析的代码前后都埋上时间函数,再加上对应的字符串,然后打Log输出这段代码的时间耗时,以此找到性能热点,进行相关的优化分析。
发现问题
项目中往往后期进行性能分析时,会大量为现有代码打上时间点代码行,造成重复的工作,容易造成埋点错误。且完成性能优化后未及时删除相应埋点代码,会造成代码臃肿阅读困难,就会发现虽然添加和删除很简单,但是量大了也比较麻烦。
提出问题
那针对这种大量埋点键值代码或大量删除特征化代码能否让脚本来做呢?
解决问题
解决方案要点:
- 针对量大,易错的痛点,通过python脚本读取配置文件来进行配置化埋点,或者自动分析埋点。
- 针对埋点代码残留,直接通过脚本分析一键清除,需要时再自动埋上,不用再手动去删除和添加埋点代码。
结果与使用示例
安装和卸载
本地环境需要python Version > 3.6
安装: 双击AutoProfilerContextMenuInstall.bat
卸载: 双击AutoProfilerContextMenuUninstall.bat
快速开始
-
在文本编辑打开test.lua,目前未插入键值对代码
-
回到window资源管理器,右键test.lua,选择3AutoAnalyze执行
-
执行后,插入键值对代码
且NeedProfilConfig.txt中也出现了对应键值对的行号
-
执行删除
发现记录了之前埋点的行号
-
恢复键值对,如果此时再使用1ConfigProfiler功能
发现又恢复了之前的埋点
4项功能简介
功能1:会根据NeedProfilerConfig.txt中的行号,对所选的lua文件对应的行号进行键值对埋点,可以随意定义
功能2:删除所有的键值对埋点,但是会将删除前的键值对埋点分析后,保存正确的行号到NeedProfileConfig.txt中,下次还需要上次的埋点,可以使用"功能1"直接快速恢复
功能3:自动分析lua中的方法和循环体,会直接在方法的前后和for循环的前后埋上键值对
功能4:会分析当前文档的键值对埋点,直接将结果存在NeedProfileConfig.txt中,从其他人拷贝过来可以快速分析之后,进行修改。
尚未完成功能
多文件缓存,目前只能支持对单个lua文件进行埋点保存操作。
扩展
此工具不光可以用于lua的键值对埋点插入,可以稍加修改用于更多同质化代码插入和删除的场景。
源文件
总结
以上针对所发现的问题完成了一个批量埋点和清除的脚本
- 标准化了性能测试日志
- 减少了埋点和删除的工作量
- 不会再因为手动逐一清除引发一系列错误
- 保证代码不因为埋点过多难以删除出现臃肿的情况