我希望不是每个人都在使用 Rational Purify。
那么当您想要测量时该怎么办:
目前,我们手动执行此操作[使用带有时间戳的日志语句和另一个脚本来解析日志并输出到 Excel。唷……)
你会推荐什么?指出工具或任何技术将不胜感激!
编辑:抱歉,我没有先指定环境,专有移动设备上的普通 C平台
我已经做过很多这样的事了。如果你有 IDE,或者 ICE,有一种技术这需要一些手动操作,但不会失败。
警告:现代程序员讨厌这个,我会被否决。他们喜欢他们的工具。但它确实有效,而且你并不总是拥有好的工具。
我假设在你的例子中,代码类似于 DSP 或视频,在定时器上运行并且必须很快。假设您在每个计时器滴答处运行的是子例程 A。编写一些测试代码以在一个简单的循环中运行子例程 A,例如 1000 次,或者足够长的时间让您等待至少几秒钟。
当它运行时,用暂停键随机停止它,并对调用堆栈(不仅仅是程序计数器)进行采样并记录下来。 (这是手动部分。)执行此操作多次,例如 10 次。一次是不够的。
现在寻找堆栈样本之间的共性。查找至少 2 个样本中出现的任何指令或调用指令。其中会有很多,但其中一些将在您可以优化的代码中。
这样做,保证你会得到很好的加速。 1000 次迭代将花费更少的时间。
您不需要大量样品的原因是您不是在寻找小东西。就像如果您在 10 个样本中的 5 个上看到特定的调用指令,则它大约占总执行时间的 50%。如果您确实想知道的话,更多样本可以更准确地告诉您百分比是多少。如果您像我一样,您只想知道它在哪里,这样您就可以修复它,然后继续进行下一个。
这样做,直到您找不到更多可以优化的东西,并且您将达到或接近最高速度。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)