MSVC发布的性能不同

时间:2010-04-02 06:36:57

标签: c++ performance visual-c++

我很好奇可能是同一个可执行文件性能差异很大的原因。 有时,我运行它需要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。 没有数据被读/写。没有与控制台交互。 当我说有时我运行它意味着我打开控制台,没有其他应用程序运行,禁用处理器限制。完成后我继续执行应用程序。 我想这与缓存或类似的东西有关,但我对低级别的东西并不擅长。

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

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