[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