几秒钟后C ++代码运行缓慢

时间:2013-01-12 21:28:16

标签: c++ performance differential-equations

我有C ++代码,它以数字方式求解偏微分方程。一切正常,但在前10次左右的迭代之后,代码开始运行的速度慢了3倍。

一些可能相关的信息:

  • 我正在使用Eigen包进行大量计算
  • 我在数组中存储了大量数据(每次迭代大约100000个双精度值)

我不太了解计算机是如何工作的或者用c ++编写的,并且想知道是否有人能够指出我正确的方向,以便我可以解决这个问题。

我也可以发布代码,如果它有用,但它很长。

1 个答案:

答案 0 :(得分:2)

像奥利说的那样,它可能是任何东西。

可能是算法。你知道在经过一定程度的迭代后代码是不是应该放慢速度吗?也许问题的本质是程序必须放慢速度。

可能是计算机内存不足。尝试在具有更多内存的计算机上运行相同的程序,它做得更好吗?然后你必须进行内存分析并识别内存中但没有被使用的任何对象(如大型数组)。并修复代码,以便它不会发生。查找“内存泄漏”并了解如何修复它。

可能没有内存泄漏,但随着迭代的累积,进程需要更多内存,以至于需要不断地从硬盘驱动器来回交换内存页面,这种行为很常见,并且是与速度突然下降相一致。尝试重写程序,以便内存占用不会像那样扩展。尝试管理数据,以便删除未使用的数据或将其写入文件。

或其他什么......

希望这有帮助。