我正在编写一个视频游戏,并使用perf(1)
过火焰图获得一些不错的“整个程序性能”信息。
不过,我还想调查特定的最坏情况时期,例如某些耗时过长的帧。有没有好的方法可以用 perf 进行这种测量?
同样,您可以在 Web 服务器上下文中想象这一点,您希望调查发送的特定缓慢响应,而不仅仅是总体吞吐量。
perf record
我有以下想法,但我想知道是否可以做得更好:使用和转储事件的完整列表perf script
,并从游戏中转储慢速帧的开始/结束时间戳。然后,使用一些脚本来关联时间戳,并仅查看与该时间段相关的性能事件。看起来可行,但基于时间戳有点脆弱。
也许有某种方法可以在我的代码中添加调用,表示“立即开始记录性能事件”和“立即停止记录它们”,例如perf.dat
每帧创建一个文件?
或者也许我可以输出一些特殊事件,例如“帧开始,帧结束”,这些事件将包含在从我的程序运行中转储的完整事件日志中?这样,所有内容都在 perf.dat 文件中,并且我不必关联两个不同的输出文件。
或者还有其他想法吗?