题
我希望不是每个人都是使用合理的净化。
所以你是做什么的时候你要措施:
- 时间所采取的一个函数
- 峰存使用情况
- 代码复盖率
目前,我们做手工[使用登录的发言时间戳和另一个脚本分析日志和输出。唷...)
你有什么建议?指向的工具或任何技术可以理解!
编辑:对不起,我不是指定环境第一, 其纯C在专利的移动 平台
解决方案
你可能想要不同的工具,用于业绩分析和编码的复盖范围。
用于分析我喜欢鲨鱼在MacOSX.它是免费苹果很好。如果你的程序是香草C您应该能够使用它,如果你可以弄一个Mac。
用于分析在窗户可以使用LTProf.廉价的,但不是很大:http://successfulsoftware.net/2007/12/18/optimising-your-application/
(我认为Microsoft是真的射自己的脚不提供一个体面的分析器有便宜的版本。)
对于复盖面,我愿意复盖范围的验证程序,在Windows:http://successfulsoftware.net/2008/03/10/coverage-validator/ 它更新的复盖面在现实的时间。
其他提示
我已经做这个很多。如果你有一个IDE,或者一个冰, 还有一种技术 这需要一些手册的努力,但没有工作失败。
警告:现代化的程序员讨厌这样,和我去拿downvoted.他们喜欢他们的工具。但它真的工作,你不总是有很好的工具。
我假设你的情况代码是一样的东西DSP或视频上运行的一个定时器和有要快。假设你怎么运行在每个定时器的勾子程序A写一些试验运行的代码一个子程序在一个简单的循环,说1000倍,或足够长的时间让你等待至少几秒钟。
同时,它的运行,随意终止与暂停关键和样品呼叫堆(不仅仅是程序计数),并记录。(这本手册的一部分。) 这样做一定数量的时候,喜欢10.一旦是不够的。
现在,寻找共同点之间堆的样品。寻找任何指令或呼叫指令,现在至少2个样本。会有许多的这些,但他们中的一些将在代码,你可以优化。
这样做,你会得到一个很好的加速,保证。1000次迭代将需要较少时间。
你不需要很多样你不是在寻找小东西。如果你看到一个具体的呼叫指令月5的10个样本,它是负责大约50%的总的执行时间。更多的样品就会告诉你更确切地说什么的百分比,如果你真的想知道。如果你像我一样,所有你想知道的是它在哪里,所以你能修好它,和转移到下一个。
这样做,直到你找不到任何东西更为优化,以及你将在或接近你的前的速度。
对于复杂的应用程序,我是个大风扇的英特尔的 振荡.这是一个略有不同思想传统的分析器,文书的代码。它的工作过取样的处理,看看那里指令的指令1,000倍的第二个。它具有巨大的优势是不需要任何改变你的二进制文件,其中往往不会改变的时机是什么你想的措施。
不幸的是,它不是好的.网或java由于没有一种方式振荡来地图的指令的指令,以符号像是传统的代码。
它还允许你在测量各种其他的处理器/硬件为中心的指标,像钟每指令,缓存命/失误,TLB命/失误,等等这让你确定为什么某些章节的代码可以考虑更长的时间来运行比,你会期望刚刚通过检查代码。
如果你正在做的一个'在金属嵌入式'C'系统(我不是很确定什么样的"移动"暗示在发布),然后你通常有某种计时器ISR,这是相当容易样品代码的地址在哪发生中断(通过挖掘回叠或看链接寄存器或任何).然后是微不足道建立一个柱状图的地址在一些组合的粒度/范围的利益。
它通常则不太硬要编造的某些组合的代码/script/Excel表格合并你的直方图计数的地址从你的连接号文件列表给你的档案信息。
如果你很RAM限制,它可以是一个有点痛收集到足够数据,这是两种简单和有用的,但是你需要告诉我们更多关于你的平台。
nProf -免费的,那为。网。
能够完成任务,至少足以看到80/20.(20%的代码,把80%的时间)
的 谷歌Perftools 是非常有用,在这方面的工作。
我用 devpartner 与MSVC6和XP
是如何的任何工具要工作,如果你的平台是一个专有的操作系统?我认为你做最好的,你可以现在