如何找出我的代码的哪一部分正在减慢我的c ++程序

时间:2012-09-07 05:02:27

标签: c++ windows performance algorithm visual-studio-2012

我写了两个版本的程序,这是一个用c ++编写的进化算法。第一个版本是程序性的,工作正常且非常快。第二个版本完全是OOP,程序找到结果,但速度非常慢(比第一个版本慢10倍)。有没有办法可以测量循环内部代码段的时间或类似的东西?任何建议或想法都会有所帮助。 提前谢谢。

5 个答案:

答案 0 :(得分:1)

使用分析器。哪一个最好取决于平台/操作环境;例如使用g ++你可以使用gprof,或者如果你不想重新编译,你可以使用oprofile,假设Linux。在Solaris上,您可以使用dtrace。在其他平台上,例如Windows或Mac,将平台的标记添加到问题...

答案 1 :(得分:1)

您需要profiler才能在程序中找到与效果相关的问题。

Depending on the Visual Studio edition, you have various levels of profiling support in your Visual Studio.如果您有幸参加Visual Studio Ultimate或Premium版本,you have very good profiling support built right in.

如果您使用的是Visual Studio Express或Visual Studio Professional,很遗憾没有内置到Visual Studio中的分析支持,但您可以使用例如info at this link如何使用这些版本手动免费手动执行此操作。

答案 2 :(得分:0)

使用分析器。如果您正在使用gcc进行编译,请查看gprof,例如。

答案 3 :(得分:0)

对于您的具体情况,我建议下载并使用此工具:http://www.codersnotes.com/sleepy/

这是一个非常简单(但有效)的采样分析器。 只需在Visual Studio中使用Ctrl + F5(发布)启动应用程序,运行此程序(非常困),双击您的exe名称,等待,您将看到包含功能名称的详细报告。

对于下一级别,如果需要,请使用VTune。

答案 4 :(得分:0)

您可以在VS中使用\callcap编译器标志。你可以阅读它here

基本上,您只能为要分析的.cpp文件添加此标记,定义输入/退出功能,重建应用程序并运行它。我建议你将你想要分析的代码(并怀疑它很慢)分成函数,然后你可以看到哪一段代码需要更多的时间来执行。

与现有的分析器相比,这是一项更多的工作,但值得一试。