可能重复: 您最喜欢的分析工具(对于C++)是什么?
有什么好的工具来分析C和C++混合的源代码吗?什么是正反两方面的,哪些是你曾经使用过的,哪些是值得使用的。请不要给我一个从谷歌的工具列表。我也可以这样做,我想要的是利用那些使用过这些工具的人的个人经验,并且知道他们的利弊。
提前谢谢。
发布于 2010-11-10 04:53:38
我发现gprof是最好的CPU热点分析器,Google性能工具是最好的抽样分析器。两者都为C和C++工作。
在我看来,有Windows上没有良好的分析工具。
gprof利弊
Google性能工具的优缺点
有关有用的问题和答案
发布于 2010-11-10 18:05:21
我恭敬地不同意马特的观点。
我在Windows上一直使用的工具是随机暂停技术,它适用于IDE支持的所有语言。
作为使用它进行性能优化的一个示例,这个案例展示了如何通过一系列步骤实现43次加速比。
Gprof有很多问题,列在这里,根据google手册,一些相同的问题会重复出现,比如报告过程,而不是线条,强调自己(本地)时间,强调图形等等(我无法从文档中判断它是否在阻塞时采样)。
随着软件系统变得越来越大,自我时间变得越来越不相关。程序计数器大部分时间都花在库例程上,或者在系统中被阻塞。图形变成了巨大的巢穴。人们问:“我知道函数X很昂贵,但是函数X的问题在哪里呢?”更重要的是,“瓶颈”越来越大,因为堆栈的平均深度越来越大,而且堆栈的每一层都是进行更多函数调用的新机会。
缩放是一个示例,它可以逐行报告百分比,在阻塞时报告样本,并允许用户控制采样,以避免在用户输入时稀释样本集。
编辑:对不起,不能留下足够好的一个人。这里有一个新的解释:
程序的工作方式是,他们找到了一棵呼叫树,就像我窗外的橡树。它有一个主干(主),它发芽分支(呼叫站点),在几个层次上发芽到叶子(指令)和橡子(阻塞呼叫)。
当树木外科医生来修剪(优化)它,他是否只看哪里的叶子(热点)?他是否忽略了橡子(封堵期间没有样品)?不,他寻找的分支(调用站点)都是沉重的(在堆栈上很多)和不健康(不必要的)。这就是他要修剪的东西。这就是随机暂停和Zoom所做的,就是帮助查找那些呼叫站点。
发布于 2010-11-10 06:31:21
您可以使用愈伤组织创建分析输出。它是瓦兰的一部分。Callgrind可以与KCacheGrind一起使用,只要您使用的是Linux,这可能就值得一看。
https://stackoverflow.com/questions/4141307
复制相似问题