来自随机访问阵列的缓存未命中

时间:2017-11-09 14:18:31

标签: c++

我有一个对应于整数索引轴的值数组。我需要在特定的双精度指数处从这些值进行线性插值。

double indices[20];
double results[20];
double values[1000];

// ...

for (int i = 0; i < 20; i++)
{
    double index = indices[i];
    int indexInt = (int)index; 
    double frac = index - indexInt;

    // Linear interpolation
    result[i] = values[indexInt] * (1.0 - frac) + values[indexInt + 1] * frac;
}

分析显示结果线性插值线比预期花费更多的程序运行时间,我怀疑这是由于缓存未命中。索引已排序但不保证彼此接近,并且没有持续的步幅。有没有办法缓解这种情况?

0 个答案:

没有答案