如何找出我的代码的哪一部分正在减慢我的c++;程序 我编写了2个版本的程序,是C++中的一个进化算法。第一个版本是程序性的,运行良好,速度非常快。第二个版本是完全面向对象的,程序可以找到结果,但是速度非常慢(比第一个版本慢10倍)。有没有一种方法可以测量循环或类似循环中代码段的时间?任何建议或想法都会有帮助。 提前感谢。

如何找出我的代码的哪一部分正在减慢我的c++;程序 我编写了2个版本的程序,是C++中的一个进化算法。第一个版本是程序性的,运行良好,速度非常快。第二个版本是完全面向对象的,程序可以找到结果,但是速度非常慢(比第一个版本慢10倍)。有没有一种方法可以测量循环或类似循环中代码段的时间?任何建议或想法都会有帮助。 提前感谢。,c++,windows,performance,algorithm,visual-studio-2012,C++,Windows,Performance,Algorithm,Visual Studio 2012,使用档案器。哪一个最好取决于平台/操作环境;e、 使用g++可以使用gprof,或者如果不想重新编译,可以使用oprofile,假设是Linux。在Solaris上,您可以使用dtrace。在其他平台上,如Windows或Mac,请在问题中添加平台标签…使用探查器。如果您使用gcc进行编译,请查找gprof,例如。您需要一个数据库来查找程序中与性能相关的问题 如果您有幸参加Visual Studio旗舰版或高级版 如果您使用的是Visual Studio Express或Visual Studi

使用档案器。哪一个最好取决于平台/操作环境;e、 使用g++可以使用gprof,或者如果不想重新编译,可以使用oprofile,假设是Linux。在Solaris上,您可以使用dtrace。在其他平台上,如Windows或Mac,请在问题中添加平台标签…

使用探查器。如果您使用gcc进行编译,请查找gprof,例如。

您需要一个数据库来查找程序中与性能相关的问题

如果您有幸参加Visual Studio旗舰版或高级版


如果您使用的是Visual Studio Express或Visual Studio Professional,很遗憾,Visual Studio中没有内置评测支持,但您可以使用这些版本免费手动执行评测。对于您的特定情况,我建议下载并使用此工具:

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


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

您可以使用VS中的
\callcap
编译器标志。您可以了解它

基本上,您只能为要分析的
.cpp
文件添加此标志,定义进入/退出功能,重建应用程序并运行它。我建议您将试图分析的代码(并怀疑其速度较慢)拆分为函数,然后您可以看到哪段代码执行起来需要更多时间


与已有的探查器相比,这项工作要多一些,但值得一试。

您使用的是哪种编译器/平台?Windows上的Visual Studio?Linux上的gcc?这可能会有所帮助。我如何用c来测量时间?使用Prror是显而易见的答案,但在猜测中,我可能会说,你可能是复制对象而不是通过引用或智能POTITIT很容易犯这样的简单错误,C++中,大量的数据不经意地复制。在C语言中,你必须用你自己的方式去
memcpy
结构。只要一个失误,你就可能一次又一次地抛出一份数不清的兆字节数据。我试图在visual studio中使用探查器,但我无法得到具体结果,只能得到图表