MSVC发布的性能不同

问题描述 投票:1回答:2

我很好奇可能是同一个可执行文件性能差异很大的原因。有时候,我运行它需要20秒,有时它是110.源是使用标准选项在发布模式下使用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;
  }

编辑

对不起,不提输入数据。向量Un和Ucur初始化为2000个元素,值为0.没有数据被读/写。没有与控制台交互。当我说有时我运行它意味着我打开控制台,没有其他应用程序运行,禁用处理器限制。完成后我继续执行应用程序。我想它与缓存或类似的东西有关,但我对低级别的东西并不擅长。

c++ performance visual-c++
2个回答
1
投票

我猜这是因为你从存储设备加载大量数据。如果存储设备存在很多争用,那么随着软件需要轮流等待加载,事情会运行得更慢。


0
投票

当我将此函数中的参数从地址切换到变量时,问题得以解决。在我有double &time, double &dt, double &end_time之前 现在:double time, double dt, double end_time

它似乎是与记忆有关的问题......希望,它可以帮助任何人

© www.soinside.com 2019 - 2024. All rights reserved.