From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Message-ID: <45E6A897.9050409@help0.ru> Date: Thu, 01 Mar 2007 22:19:03 +1200 From: "Arcady V. Ivanov" Organization: Help Ltd. User-Agent: Mozilla/5.0 (X11; U; Linux i686; ru-RU; rv:1.8.0.7) Gecko/20061008 SeaMonkey/1.0.5 MIME-Version: 1.0 To: ALT Linux Sisyphus discussion list References: <200703011259.13606.serpiph@nikiet.ru> In-Reply-To: <200703011259.13606.serpiph@nikiet.ru> Content-Type: text/plain; charset=KOI8-R; format=flowed Content-Transfer-Encoding: 8bit Subject: Re: [sisyphus] =?koi8-r?b?88vP0s/T1Ngg0NLPx9LBzc3ZLi4u?= X-BeenThere: sisyphus@lists.altlinux.org X-Mailman-Version: 2.1.9rc1 Precedence: list Reply-To: ALT Linux Sisyphus discussion list List-Id: ALT Linux Sisyphus discussion list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 01 Mar 2007 10:40:20 -0000 Archived-At: List-Archive: List-Post: Epiphanov Sergei пишет: > Не понимаю, почему программа вида: > =================== > 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 то же самое). > > Может кто подсказать? > Автоматические переменные выделяются в стеке, т.е. массив N откусывается в стеке. Он примерно с мегабайт. Попробуйте сделать N static и проверьте скорость. Если будет одинакова, значит есть какой-то механизм увеличения стека по исключениям обращения к памяти, что довольно занудно. Но это догадки. -- С уважением. Иванов Аркадий Зам.директора ООО "Хелп" mailto: arc@help0.ru web:http://www.help0.ru mobile: 8-962-290-8343 ------------------------------------ I use stable soft: Linux, Mozilla and OpenOffice. And recommend them for you too.