Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/157.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在C+中逐行分析+; 我有一个C++程序,我正在努力优化。 因为我希望它运行得快,所以我没有使用很多函数调用。我见过的大多数评测工具都可以在函数调用解析中提供评测信息。但是,我希望它是一行一行的解决方案。有这样的选择吗_C++_Visual Studio 2010_Profiling - Fatal编程技术网

在C+中逐行分析+; 我有一个C++程序,我正在努力优化。 因为我希望它运行得快,所以我没有使用很多函数调用。我见过的大多数评测工具都可以在函数调用解析中提供评测信息。但是,我希望它是一行一行的解决方案。有这样的选择吗

在C+中逐行分析+; 我有一个C++程序,我正在努力优化。 因为我希望它运行得快,所以我没有使用很多函数调用。我见过的大多数评测工具都可以在函数调用解析中提供评测信息。但是,我希望它是一行一行的解决方案。有这样的选择吗,c++,visual-studio-2010,profiling,C++,Visual Studio 2010,Profiling,我正在Windows上使用Visual Studio 2010 谢谢。应该能够满足您的需求。如果这是您想要的: 如果您在AMD处理器上运行,CodeAnalyst是免费的,并且可以这样做(至少,在基于时间的评测中);实际上,您可以“放大”和“缩小”,查看从进程到函数,再到单个汇编指令,占用CPU时间最多的是什么 但是,请记住,为了通过基于时间的分析获得有意义的结果,您应该多次运行代码的关键部分,否则您得到的统计信息就没有多大意义 顺便说一句,在我看来,你应该忘记更少的函数调用=>更快的想法。如

我正在Windows上使用Visual Studio 2010

谢谢。

应该能够满足您的需求。如果这是您想要的:


如果您在AMD处理器上运行,CodeAnalyst是免费的,并且可以这样做(至少,在基于时间的评测中);实际上,您可以“放大”和“缩小”,查看从进程到函数,再到单个汇编指令,占用CPU时间最多的是什么

但是,请记住,为了通过基于时间的分析获得有意义的结果,您应该多次运行代码的关键部分,否则您得到的统计信息就没有多大意义

顺便说一句,在我看来,你应该忘记更少的函数调用=>更快的想法。如果函数调用的成本大于其“有效负载”,编译器应该能够自己判断内联调用是否方便,在某些情况下,即使内联太多也会降低代码的速度。

IMHO,例如,这里是一个示例。这不是一个众所周知的技术,除了少数人,例如,和,和。你可能会惊讶于它的技术含量和手动操作都非常低,但你无法超越它的效果


哦,顺便说一句,对于VisualStudio来说,这可能是下一个最好的选择。它为您提供行级别的百分比,这些百分比来自于在随机时钟时间采集的堆栈样本。不要被许多花哨的用户界面选项或对时间准确性的承诺所吸引。这些都无关紧要。重要的是,它精确地指出了值得优化的地方。

是一款针对Windows的商业分析工具,我发现它在功能和线路计时方面都非常有效。我喜欢它的一点是,您不必修改编译器选项或VisualStudio设置——也就是说,您不需要任何额外的编译器选项来启用评测:只需完成pdb(符号)文件和可执行文件的评测。(是的,你可以为你的发行版编译创建一个pdb文件。)

只使用VS2010或者其他工具可以吗?我想我可以使用其他工具,尽管我想花点时间尝试了解其他工具在技术上是如何工作的,会干扰编译器选项等等。请注意。在Optimizer掌握了您的代码之后,汇编指令与源代码中的行之间不再存在明确的1对1关系。一行可以对应多个彼此不相邻的组装操作,一条组装指令可能同时来自多行。“不使用很多函数调用”-如果你有数学计算之类的小步骤,并且你真正专注于单个函数,那么不管怎样,分析可能会破坏您的并行性和性能—请尝试一下,但也要运行核心循环几千次/百万次,并测量运行时间,然后使用您能想到的所有替代实现进行实验。您可能会考虑移植到Linux并尝试ValGRIND,因为您可以发现一些CPU /内存体系结构中固有的漏洞问题。Ruele 8:不要过早地优化()。在担心消除函数调用之前,请使用探查器并确认函数调用会降低速度。函数可以帮助您分组计算,并可能在算法中找到更大的优化。优化器通常可以在较小的代码块上做得更好。CodeAnalyst中基于时间的评测也适用于其他处理器。函数的成本比进入和离开它们所花费的周期更大。更大的代价是,它们就像一张信用卡,鼓励你多使用它们。当这种趋势在几个层面上复杂化时,不需要太多的判断松懈就可以构成一个重大问题。