核心的想法是因为已经可以通过 Instruments 的命令行工具来记录数据,那么如果能写程序从文档中读取数据,那就可以在持续集成里实现自动化的性能测试和数据分析。
这个东西我断断续续地折腾了挺久了,最近终于多找了些时间完善了一下,顺便也写了篇博客。
目前也有一些项目做这样的事,但是我看都是用 KeyedUnarchiver 反序列化出来死找,很不可靠。所以打算直接调用 Instruments 自己的代码来读取文档,不管可靠性还是功能性上都要好上很多。
目前项目有这样几个模版的数据读取的代码例子:
- Time Profiler: 列出所有函数和对应的本身执行时间,按降序
- Allocations: 列出每一秒的分配的内存数量,按降序
- Core Animation: 按时间顺序列出采样的 fps 数据
- Connections: 列出所有连接和对应的发送接收数据量
- Energy Usage Log: 按时间顺序列出采样的电量消耗等级
虽然不是全部,但这几个应该是最常用的了,而且也已经涉及到了大多数种类的数据结构,相信即使要处理别的模版的数据,也可以从这几个里面找到参考。
最后是代码和文章的链接:
https://github.com/Qusic/TraceUtility
https://qusic.me/post/extract-data-from-trace-documents/