我有一个对应于整数索引轴的值数组。我需要在特定的双精度指数处从这些值进行线性插值。
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;
}
分析显示结果线性插值线比预期花费更多的程序运行时间,我怀疑这是由于缓存未命中。索引已排序但不保证彼此接近,并且没有持续的步幅。有没有办法缓解这种情况?