Calmer的文章

  • 首页
  • 文章归档
  • 关于页面

  • 搜索
体验游戏 笔记 推荐 工具链 工具使用 小游戏 插件 UI 软件 教程

自动插入键值对代码(用于性能分析埋点分析时可以批量快速埋点)

发表于 2022-04-16 | 分类于 游戏开发 | 0 | 阅读次数 889

前言

在我们软件开发,或者游戏开发后期,进行性能分析的时候,都需要在分析的代码前后都埋上时间函数,再加上对应的字符串,然后打Log输出这段代码的时间耗时,以此找到性能热点,进行相关的优化分析。


发现问题

项目中往往后期进行性能分析时,会大量为现有代码打上时间点代码行,造成重复的工作,容易造成埋点错误。且完成性能优化后未及时删除相应埋点代码,会造成代码臃肿阅读困难,就会发现虽然添加和删除很简单,但是量大了也比较麻烦。


提出问题

那针对这种大量埋点键值代码或大量删除特征化代码能否让脚本来做呢?


解决问题

解决方案要点:

  1. 针对量大,易错的痛点,通过python脚本读取配置文件来进行配置化埋点,或者自动分析埋点。
  2. 针对埋点代码残留,直接通过脚本分析一键清除,需要时再自动埋上,不用再手动去删除和添加埋点代码。

结果与使用示例

image.png

安装和卸载

本地环境需要python Version > 3.6
安装: 双击AutoProfilerContextMenuInstall.bat
卸载: 双击AutoProfilerContextMenuUninstall.bat

快速开始

  • 在文本编辑打开test.lua,目前未插入键值对代码
    20220416115635.png

  • 回到window资源管理器,右键test.lua,选择3AutoAnalyze执行
    20220416115615.png

  • 执行后,插入键值对代码
    20220416120114.png
    且NeedProfilConfig.txt中也出现了对应键值对的行号
    20220416120210.png

  • 执行删除
    20220416120316.png
    20220416120349.png
    发现记录了之前埋点的行号
    20220416120423.png

  • 恢复键值对,如果此时再使用1ConfigProfiler功能
    20220416120539.png
    发现又恢复了之前的埋点

4项功能简介

20220416120642.png
功能1:会根据NeedProfilerConfig.txt中的行号,对所选的lua文件对应的行号进行键值对埋点,可以随意定义

功能2:删除所有的键值对埋点,但是会将删除前的键值对埋点分析后,保存正确的行号到NeedProfileConfig.txt中,下次还需要上次的埋点,可以使用"功能1"直接快速恢复

功能3:自动分析lua中的方法和循环体,会直接在方法的前后和for循环的前后埋上键值对

功能4:会分析当前文档的键值对埋点,直接将结果存在NeedProfileConfig.txt中,从其他人拷贝过来可以快速分析之后,进行修改。

尚未完成功能

多文件缓存,目前只能支持对单个lua文件进行埋点保存操作。

扩展

此工具不光可以用于lua的键值对埋点插入,可以稍加修改用于更多同质化代码插入和删除的场景。


源文件

AutoProfiler


总结

以上针对所发现的问题完成了一个批量埋点和清除的脚本

  • 标准化了性能测试日志
  • 减少了埋点和删除的工作量
  • 不会再因为手动逐一清除引发一系列错误
  • 保证代码不因为埋点过多难以删除出现臃肿的情况
  • 本文作者: Calmer
  • 本文链接: https://mytechplayer.com/archives/自动插入键值对代码用于性能分析埋点分析时可以批量快速埋点
  • 版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!
# 工具链
UE5中资源热更新和Lua热更新方案(UnLua)
UE5问题记录(一)
  • 文章目录
  • 站点概览
Calmer

Calmer

88 日志
7 分类
10 标签
RSS
Creative Commons
0%
© 2020 — 2025 Calmer
由 Halo 强力驱动
蜀ICP备20010026号-1川公网安备51019002006543
Copyright © 2020-2025 Calmer的文章