Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.09.30;
Скачать: CL | DM;

Вниз

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

 
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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.021 c
3-98012
кгыыыыыд
2002-09-10 10:42
2002.09.30
Помогите с экспортом из Excel


1-98090
Создатель настоящий
2002-09-18 22:47
2002.09.30
Заменить файл


1-98212
Wolverin
2002-09-18 18:06
2002.09.30
Иконка в TrayBar


1-98214
Wolverin
2002-09-18 17:54
2002.09.30
ICO to BMP


1-98103
Писарь
2002-09-19 19:28
2002.09.30
Замена полос прокрутки битмапами