我正在尝试优化的C ++程序。 因为我希望它快速运行,所以我没有使用很多函数调用。我见过的大多数分析工具都可以在函数调用解析中为您提供分析信息。但是,我希望它能逐行解决。有这样的选择吗?
我在Windows上使用Visual Studio 2010。
感谢。
答案 0 :(得分:2)
Intel Parallel Amplifier应该能够满足您的需求。如果这是你想要的:
答案 1 :(得分:2)
如果您在AMD处理器上运行,CodeAnalyst是免费的,并且可以这样做(至少在基于时间的分析中);你实际上可以“放大”进出看到从进程到功能到单个汇编指令花费最多CPU时间的东西。
但是,请记住,要通过基于时间的分析获得有意义的结果,您应该多次运行代码的关键部分,否则您获得的统计信息没有多大意义。
顺便说一句,在我看来,你应该忘记较少的函数调用=>更快的想法。如果函数调用的成本大于其“有效负载”,编译器应该能够自己弄清楚内联调用是否方便,在某些情况下,即使内联过多也会降低代码的速度。
答案 2 :(得分:2)
AQTime是Windows的商业分析器,我发现它在功能和线路时序方面都能很好地工作。我喜欢它的一件事是您不必使用编译器选项或Visual Studio设置 - 即您不需要任何其他编译器选项来启用分析:您只需要进行分析是pdb(符号)文件和可执行文件。 (是的,你可以为你的发布 - 编译创建一个pdb文件。)
答案 3 :(得分:1)
恕我直言,this method is best,these reasons,这是43x speedup的示例。除了少数人,one example,another和another,这不是一项众所周知的技术。你可能会感到惊讶的是它的技术和手册非常低,但你无法击败结果。
哦,顺便说一下,对于Visual Studio,LTProf可能是下一个最好的东西。它为您提供行级百分比,从随机挂钟时间采集的堆栈样本中获得。不要被许多花哨的UI选项或时间准确性的承诺所吸引。那些事无所谓。重要的是它确定了值得优化的地方。