Я пытаюсь оптимизировать подобные вещи в тяжелых вычислительных приложениях:
скажи, что у меня есть
double d[500][500][500][500];
и следующее довольно дорого по крайней мере с точки зрения компилятора
double d[x][y][j][k]
Я хочу сказать компилятору, что это непрерывная память, чтобы облегчить вычисление смещения.
В моем примере
У меня есть что-то вроде этого:
double n=0;
for (int i=0; i < someNumber; i++)
{
n+=d[x][i][j][k] /*(some other math calculations)*/;
}
Поэтому я попытался оптимизировать его, поместив в отдельную функцию
void func( double*** const restrict dMatrix )
{
/* and do some calculations herel*/
}
мало помогло: (
Есть предложения по его оптимизации?
}
Редактировать
Я не могу переписать код, чтобы сделать массив одномерным. Я должен работать с этим многомерным зверем: (