我很好奇同一可执行文件的性能差异很大的原因是什么。 有时,我运行它需要 20 秒,有时是 110 秒。 源代码是使用标准选项在 Release模式下使用 MSVC 编译的。
代码在这里:
vector<double> Un;
vector<double> Ucur;
double *pUn, *pUcur;
...
// time marching
for (old_time=time-logfreq, time+=dt; time <= end_time; time+=dt)
{
for (i=1, j=Un.size()-1, pUn=&Un[1], pUcur=&Ucur[1]; i < j; ++i, ++pUn, ++pUcur)
{
*pUcur = (*pUn)*(1.0-0.5*alpha*( *(pUn+1) - *(pUn-1) ));
}
Ucur[0] = (Un[0])*(1.0-0.5*alpha*( Un[1] - Un[j] ));
Ucur[j] = (Un[j])*(1.0-0.5*alpha*( Un[0] - Un[j-1] ));
Un = Ucur;
}
编辑
抱歉,更不用说输入数据了。 vector Un 和 Ucur 被初始化为 2000 个值为 0 的元素。 没有数据被读取/写入。不与控制台交互。 当我说有时我运行时,这意味着我打开了控制台,没有其他应用程序在运行,处理器节流被禁用。我在完成后继续执行应用程序。 我想这与缓存或类似的东西有关,但我不擅长低级的事情。
最佳答案
我猜测这是因为您正在从存储设备加载大量数据。如果对存储设备有很多争用,那么运行速度会变慢,因为您的软件需要等待轮到它进行一些加载。
关于c++ - MSVC 发布 exe 的不同性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2565354/