[sisyphus] Скорость программы...
Epiphanov Sergei
=?iso-8859-1?q?serpiph_=CE=C1_nikiet=2Eru?=
Чт Мар 1 12:59:13 MSK 2007
Не понимаю, почему программа вида:
===================
int main(void)
{
float N[30*60*60];
int i,j,k,shift;
for (i=0; i<30;i++)
for(j=0;j<60;j++)
for(k=0;k<60;k++){
shift=i*60*60+j*60+k;
N[shift]=<расчёт>;
}
}
===================
работает на порядки быстрее программы
===================
int main(void)
{
float N[30*60*60];
int i,j,k,shift;
shift=0;
for (i=0; i<30;i++)
for(j=0;j<60;j++)
for(k=0;k<60;k++){
shift++;
N[shift]=<расчёт>;
}
}
===================
Хотя, теоретически, должно быть наоборот. Расчёт в обоих случаях один и тот
же. gcc-4.1.1.alt11. Сборка программы с параметром -O2 (-Os то же самое).
Может кто подсказать?
--
С уважением, Епифанов Сергей
Подробная информация о списке рассылки Sisyphus