我有 C++ 代码可以数值求解偏微分方程。一切正常,但在前 10 次左右的迭代之后,代码开始运行慢约 3 倍。
一些可能相关的信息:
- 我正在使用包 Eigen 进行大量计算
- 我将大量数据存储在一个数组中(每次迭代大约 100000 个双精度值)
我不太了解计算机的工作原理或 C++ 编码,我想知道是否有人能指出我正确的方向,以便我可以解决这个问题。
如果有帮助,我也可以发布代码,但它很长。
我有 C++ 代码可以数值求解偏微分方程。一切正常,但在前 10 次左右的迭代之后,代码开始运行慢约 3 倍。
一些可能相关的信息:
我不太了解计算机的工作原理或 C++ 编码,我想知道是否有人能指出我正确的方向,以便我可以解决这个问题。
如果有帮助,我也可以发布代码,但它很长。
就像奥利说的那样,它可以是任何东西。
可能是算法。您知道在一定数量的迭代后该代码是否不应该放慢速度?也许您的问题的性质是程序必须放慢速度。
可能是电脑内存不足。尝试在内存更大的计算机上运行相同的程序,效果会更好吗?然后,您必须进行内存分析并识别内存中存在但未被使用的任何对象(如大型数组)。并修复代码,使其不会发生。查找“内存泄漏”并了解如何修复它。
可能是没有内存泄漏,但随着迭代次数的增加,进程占用更多内存,以至于需要不断地从硬盘驱动器来回交换内存页面,这种行为很常见,并且与速度突然下降。尝试重写程序,以使内存占用不会像那样扩大。尝试管理数据,以便删除未使用的数据或将其写入文件。
或者是其他东西...
希望这可以帮助。