我有一个正在为一个项目运行的代码。它是 O(N^2),对于我来说,N 是 200。有一种算法可以将此 O(N^2) 转换为 O(N logN)。这意味着,使用这种新算法,它应该快 100 倍左右。但是,我只得到了 2 倍的增长(也就是 2 倍快)。
我试图缩小范围,看看我是否搞砸了,或者这是否是我编写这个程序的方式所固有的。对于初学者,我在嵌套类中有很多函数开销。例如,我有很多这样的(在许多循环中):
energy = globals->pair_style->LJ->energy();
由于我在实际数据方面得到了正确的结果,只是错误的速度增加,我想知道函数开销是否真的会导致速度降低多达 50 倍。
谢谢!