Чудеса оптимизации.
07-10-2007 18:04
к комментариям - к полной версии
- понравилось!
Сижу, программирую. Чашка горячего чая, ритмичная музыка, код сам ложится в строчки - все отлично, ничто не предвещает беды. Запускаю написанный кусок на исполнение. Ошибка! Попытка чтения из, грубо говоря, неразмеченной под мои нужды области памяти. Что за нафиг? Сижу, проверяю. По идее, надо с семидесятью элементами массива сотворить некоторые преобразования. В массиве и есть ровно эти самые семьдесят элементов. Как проще всего? Верно, цикл, знакомый всем со школьной скамьи: for i:=1 to 70 do... Ничего не понимаю, все же должно быть как надо?.. Запускаю. Ошибка. Чай остывает. Картина мира дает трещину. Трассирую. Цикл начинается тем, что переменной i задается значение... 71! И при последующих итерациях уменьшается! Давлюсь чаем. Это что за новое слово в конной авиации? Что за сальто через левое ухо? Побеждаю глюк только сменой вида цикла на while-цикл с принудительным увеличением переменной. Видимо, компилятор соптимизировал цикл таким вот странным способом, перевернув его с ног на голову. Сколько программирую, а с такой акробатикой столкнулся впервые. Но зато теперь буду знать на будущее.
вверх^
к полной версии
понравилось!
в evernote