显示cpu周期和汇编代码等待时间的探查器工具

问题描述

我记得在过去,当为第一台iPhone开发代码时,XCode就有一个称为shark的分析工具。尽管shark IIRC可以使用时间采样代码进行常规性能分析,但是当我对代码的热瓶颈进行性能优化时,有一项功能非常有用。

该工具将逐行显示汇编指令,并为每一行显示执行前需要执行多少个cpu周期以及必须停顿多长时间。

它看起来像这样:

Shark Profiler

指令的周期显示为X:Y,其中X是CPU周期的总数,Y是直到下一条指令可以执行之前需要多少个周期(只要它不取决于结果)此指令)。 “停顿”显示下一行的执行停顿了多长时间,因为它取决于上一条指令的结果。

通过优化流水线指令并隐藏指令的所有等待时间,这使我能够重组已经高度优化的代码,使其速度提高两倍或三倍。

还有这样的工具可以做到吗?显然,周期时序取决于执行它的特定cpu,但是我猜想这样的工具将允许选择架构来显示时序,或者成为某个架构的特定工具(在我的情况下,我主要是有兴趣针对Intel Xeon SP 1和2进行优化)

// Edit:虽然显然现代的cpu相当复杂(能够无序执行指令或具有多个可以并行运行的执行单元),但仍然可以进行这种分析,并且该指令有这样的表各种架构的延迟(和累积的指令延迟):https://www.agner.org/optimize/instruction_tables.pdf

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...