ETTrace:简化iOS性能分析的新工具
Emerge Tools最近开源了ETTrace,旨在通过提供直观的可视化和简单的操作来简化iOS应用性能分析。尽管ETTrace面临着Xcode集成的Time Profiler的激烈竞争,Emerge Tools的工程师Noah Martin指出,Xcode Time Profiler存在许多需要改进的地方。
Xcode Time Profiler的不足
Martin表示,Xcode Time Profiler在使用中常常不稳定且速度较慢,甚至在获取文章截图时多次出现冻结,需要强制退出。符号化(Symbolication)也经常成为问题,生成的跟踪信息只显示地址而不显示函数名称。
ETTrace的优势
相比之下,ETTrace通过火焰图(Flame Graph)让性能瓶颈易于识别,并提供了一个易于使用的命令行工具,可以在本地运行应用时进行性能分析。将ETTrace集成到iOS应用中非常简单,只需链接一个Objective-C框架,并在命令行中运行ettrace
来启动和停止性能分析。ETTrace还支持在应用启动后立即开始跟踪,只需将Info.plist中的ETTraceRunAtStartup
键设置为YES
。
ETTrace的工作原理
ETTrace能够以固定间隔记录应用堆栈到跟踪文件中,然后生成可视化结果。它只采样主线程,因为主线程是iOS应用中最敏感的部分,负责渲染UI,绝不能阻塞。生成的跟踪文件可以上传到Emerge Tools网站的公共页面以创建火焰图。用户还可以比较两个不同的跟踪文件,检查某个函数的性能是提升了还是退化了。
集成到CI管道
Martin提到,ETTrace的另一个优势是可以集成到CI管道中,使用Emerge Tools的性能分析功能进行性能测试。他提到DoorDash的案例,通过识别和移除与Swift协议一致性测试相关的瓶颈,成功将iOS应用的启动时间减少了60%。
火焰图简介
火焰图是一种可视化层次数据的方式,可以轻松识别最常用的代码路径。每个节点(即函数)由一个帧表示,帧的宽度表示该函数使用的CPU时间的相对量。
获取ETTrace
ETTrace可以从GitHub下载。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。