随着时间的推移C ++代码运行速度变慢

时间:2013-01-31 02:47:03

标签: c++ runtime

我有一个很长的C ++程序,由数千行代码,几个类,函数等组成。程序基本上从输入文件读取信息,运行算法,并将结果写入输出文件。

今天我意识到程序的运行时间会不时发生剧烈变化。因此,我通过重新启动计算机,关闭所有其他可能的事情,并使用相同的输入文件连续运行代码5次来进行小测试。运行时间分别为50,80,130,180,190秒。

我在这种情况下的第一个猜测是未删除的动态记忆。但是我在整个代码中只使用了两次动态数组,我确信我会删除这些数组。

你们对此有任何解释吗?我在Windows 7计算机上使用Visual Studio 2010。

2 个答案:

答案 0 :(得分:3)

请注意在visual studio调试器中运行程序,因为在这种情况下,LFH(低碎片堆)内存分配器被禁用。试试VS以外的软件。

我见过一些情况,通过在visual studio中运行,任务需要几秒钟才能完成,通常需要几个小时才能完成。

最重要的是,如果你仍然不知道什么是分而治之的。检测应用程序以查看子系统的运行时,或者只是将调试计时器放在各个区域,以查看执行时间大幅变化的位置并从那里向下钻取。如果是内存分配器问题,通常会在释放阵列时看到大的运行时。

答案 1 :(得分:2)

您的代码在一个环境中运行,其中包括操作系统的状态,磁盘,网络,时间,内存,启动的其他进程等。

每次在同一环境中执行相同的代码都会得到相同的结果。

现在,您获得了不同的结果(执行时间)。如果您反复运行相同的可执行文件,那么周围环境中的某些内容正在发生变化。

现在,最明显的问题是:您的代码是否会导致外部环境发生变化?一个简单的例子是:它读入一个文件,更改数据并将其写回同一个文件。

你知道你的代码。只需使用这种方法来隔离代码可能对其环境产生的任何影响,您就会找到原因。