首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >你如何分析你的代码?

你如何分析你的代码?
EN

Stack Overflow用户
提问于 2008-09-11 14:25:17
回答 9查看 12.1K关注 0票数 11

我希望不是每个人都在使用Rational Purify。

所以,当你想测量的时候,你会做什么:

  • 函数占用的时间
  • 峰值内存使用
  • 代码覆盖

目前,我们手动完成它(使用带有时间戳的log语句和另一个脚本来解析日志和输出到excel。啊.)

你有什么推荐的?指向工具或任何技术将不胜感激!

编辑:对不起,我没有首先指定环境,它在专有移动平台上的普通C

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2008-09-11 14:50:10

您可能需要不同的工具来进行性能分析和代码覆盖。

在分析方面,我更喜欢MacOSX上的鲨鱼。这是免费的苹果和非常好。如果你的应用程序是香草C,你应该能够使用它,如果你能得到一个Mac。

对于Windows上的分析,您可以使用LTProf。便宜,但不太好:http://successfulsoftware.net/2007/12/18/optimising-your-application/

(我认为微软并没有为更便宜的Visual版本提供一个像样的剖析器,这真是自欺欺人。)

对于覆盖率,我更喜欢Windows上的coverage:http://successfulsoftware.net/2008/03/10/coverage-validator/,它实时更新覆盖率。

票数 4
EN

Stack Overflow用户

发布于 2008-11-04 22:53:26

我做了很多次了。如果您有一个IDE,或者一个ICE,那么有一种技术需要一些手工操作,但是工作正常。

警告:现代程序员讨厌这个,我会被否决的。他们喜欢他们的工具。但是它真的很管用,而且你并不总是有好的工具。

我假设在您的例子中,代码类似于DSP或视频,运行在计时器上,并且必须是快速的。假设您在每个计时器上运行的是子例程A。编写一些测试代码,在一个简单的循环中运行子例程A,比如说1000次,或者足够长,让您至少等待几秒钟。

当它运行时,使用一个暂停键随机地停止它,并对调用堆栈(不仅仅是程序计数器)进行示例,并记录它。(这是手册的部分。)这样做几次,比如10次。一次是不够的。

现在,寻找堆栈样本之间的共同点。查找至少两个样本上出现的任何指令或调用指令。会有很多这样的情况,但其中一些将出现在您可以优化的代码中。

这样做,你会得到一个很好的加速,保证。这1000次迭代将花费较少的时间。

你不需要很多样品的原因是你不是在找小东西。就像您在10个示例中的5个上看到了特定的调用指令一样,它大约占执行时间的50%。如果你真的想知道,更多的样本会更准确地告诉你百分比是多少。如果你像我一样,你只想知道它在哪里,所以你可以修复它,然后继续下一个。

这样做,直到你找不到更多的优化,你将以或接近你的最高速度。

票数 7
EN

Stack Overflow用户

发布于 2008-09-11 14:39:47

对于复杂的应用程序,我非常喜欢英特尔的伏特。与传统的分析器相比,这是一种稍微不同的思维方式,可以对代码进行检测。它的工作方式是对处理器进行采样,查看指令指针每秒1000次的位置。它的巨大优势是不需要对二进制文件进行任何更改,这通常会改变您尝试测量的时间。

不幸的是,这对.net或java没有好处,因为Vtune没有像传统代码那样将指令指针映射到符号的方法。

它还允许您测量其他以处理器/硬件为中心的度量标准,例如每条指令的时钟、高速缓存命中/缺失、TLB命中/误击等,这使您能够确定为什么某些代码段运行的时间可能比您预期的要长,只需检查代码即可。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56672

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档