Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.09.30;
Скачать: [xml.tar.bz2];

Вниз

Глюк отладчика или оптимизация?..   Найти похожие ветки 

 
Ascan_   (2002-09-18 13:33) [0]

пишем строчку:

...
for i:= 0 to 100 do edit1.text:= edit1.text+ inttostr(i)+" ";
...

И что мы видим? Примерно следующее: 0 1 2 3 4 5...
Т.е. все работает. Но теперь пройдем под отладчиком (по F7).
И что же мы увидим? А то, что переменная i меняется не от 0 до 100, а наоборот - от 100 до 0. И как понимать этот отладчик?! Что за пенки!
Сталкиваюсь с этим уже не прервый раз.
Вопрос: Как к этому относиться, с умором?.. :-)


 
REA   (2002-09-18 13:39) [1]

Циклы на уменьшение работают быстрее. См. журнал "программист".


 
Anatoly Podgoretsky   (2002-09-18 13:56) [2]

У тебя программа неверно работает?


 
Ascan_   (2002-09-18 14:01) [3]

Anatoly Podgoretsky
Нет, работает верно и все правильно, но вот данные, которые предоставляет отладчик по Ctrl-F7 - меня смущают...


 
McSimm   (2002-09-18 14:05) [4]


> И что же мы увидим?

Увидим, что переменная меняется от 0 до 100.

Потому что внутри цикла есть чтение i.


 
Ascan_   (2002-09-18 14:07) [5]

А может это я глючу... Ладно, вопрос пока отменяется...


 
MegaBass   (2002-09-18 14:09) [6]

отключи оптимизацию, авось поможет.


 
McSimm   (2002-09-18 14:11) [7]

>Ascan_
>А может это я глючу...
Нет, когда логика программы позволяет изменить направление отсчета без каких-либо последствий - оптимизатор действительно так поступает. Но на работе программы это отразиться не может


 
Ascan_   (2002-09-18 14:17) [8]

McSimm
Опцию {$O-} я уже давно ставлю по умолчанию. С этим вопросом я уже сталкивался, когда компилятор выбрасывал из кода операции, на его взгляд ненужные...


 
Anatoly Podgoretsky   (2002-09-18 14:20) [9]

Зачем раз работает правильно, то ничего делать не надо, это внутреннее дело компилятора как ему делать цикл, использовать ли цикл в прямом порядке или в обратном. Или суть твоей задачи, что бы пользователь смотрел значение через отладчик, тогда другое дело.


 
McSimm   (2002-09-18 14:25) [10]

>Ascan_
А мне за много лет так и не удалось столкнуться с ситуацией, когда мнение оптимизатора о нужности конструкций расходилось с моим.
И не разу не пришлось отключить его.


 
Ascan_   (2002-09-18 15:14) [11]

Anatoly Podgoretsky,
Зачем нужна клавиша F7? (это из разряда "Потрепаться")
Чтобы если все (или не все) работает, только смущает одна деталь - в какой-то момент промахивается алгоритм. То берешь эту клавишу F7. И... ну и понятно что дальше. А когда у тебя сложные встоенные циклы, а отладчик еще и от себя что-то добавляет, это начинает раздрожать.
А обходиться только созданием файла отчета - а это дополнительное усложнение кода.
Ладно, извращение нам не чуждо... :-)



 
Esu   (2002-09-18 15:25) [12]


> отладчик еще и от себя что-то добавляет, это начинает раздрожать.

Что ж у тебя там отладчик такого добавляет раздражающего ?
Во вложенных циклах посоветую кнопку F8 :)


 
DiamondShark   (2002-09-18 16:03) [13]

Пора вопрос про цикл for в FAQ помещать ;)


 
Anatoly Podgoretsky   (2002-09-18 16:10) [14]

Ascan_ (18.09.02 15:14)
Это твои личные проблемы, мне не F8 ни F7 проблем не добавляют и нужды в логах тоже не испытываю. Хотя прошраммы есть достаточно объемные, за 100 тысяч строк личного кода, не считая естественно библиотек. Вот последнии иногда доставляют проблемы, но я от них отказался.


 
Донской   (2002-09-19 19:26) [15]

Я сталкивался с тем, что в D5 в подобной ситуации мне приходилдось менять цикл /for to do/ на /while do/ из-за того, что не выполнялись нужные операции из-за такой "оптимизации". Я довольно долго провозился, прежде чем найти это, может поэтому теперь больше доверяю циклу /while do/.
С уважением.


 
Song   (2002-09-19 19:39) [16]

Циклы на уменьшение не треует дополнительной операции сравнения (мнемоника CMP) в теле цикла, потому что вылетают из цикла по Jz по установленному флагу нуля.



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2002.09.30;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.007 c
3-97954
RDA
2002-09-08 11:13
2002.09.30
Локализация EMS QuickDesk 2.0


3-97969
volph2
2002-09-09 12:30
2002.09.30
Как в dxDBGrid сделать типа как Locate?


14-98280
Nega
2002-09-01 13:29
2002.09.30
Что такое виртуальный метод ?


1-98114
Вэн.
2002-09-20 09:56
2002.09.30
Интернет поисковик


1-98110
Semion
2002-09-18 08:41
2002.09.30
чужой Edit1





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский