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

Вниз

какое условие выхода/продолжения цикла лучше использовать   Найти похожие ветки 

 
111   (2002-04-07 21:09) [0]

Вот такой вопрос возник:какое условие выхода/продолжения цикла лучше использовать?
Например, while i<=10 do или while i<>11 ?
until i=11 или until i>10 ?
Условие может быть достаточно сложным и перескочить нужное значение. С одной стороны, программа будет стабильнее при условии типа <= ,но есть риск не выловить ошибки.


 
drpass ©   (2002-04-07 23:21) [1]

На счет первого не знаю, а во втором случае - однозначно until i=11, т.к. при наборе этого не придется нажимать шифт


 
ION T   (2002-04-08 00:09) [2]

Ну, где-же народ, который недавно доказывал о том, что все умные кодеры пишут на асм-е?

Как удобно, так и пиши - они все равно компилируется в одну инструкцию и по скорости одинаковые........:)


 
Digitman ©   (2002-04-08 08:27) [3]

Конструкция WHILE..END после комиляции, как правило, превращается в чуть более эффективный объектный код, нежели REPEAT..UNTIL. Многие пособия и справочники по Delphi рекомендуют выбирать при прочих равных условиях именно первую конструкцию.


 
111   (2002-04-08 22:08) [4]

Речь идет не о преимуществе while или repeat, а о том, какое условие лучше использовать: <= или = . При условии <= больше вероятность того, что цикл когда-нибудь закончится :) Но если надо , чтобы он заканчивался при достижении определенного значения, то может быть, лучше использовать = ? Тогда, если программа зависает- можно первым делом искать ошибку в цикле :)


 
ION T   (2002-04-08 23:02) [5]

Вообще лучше for..do лупы использовать - в них условие обрабатывается только раз.......

А так, я же сказал что эти условия компилируются в одну асм инструкцию - cmp за которой идут джамперы (jnz, jz, jnl, jl, jg,...........) а они все с точки зрения проца занимают одно и то-же количество циклов ЦПУ (3 кажется, но зависит от располажения параметров - в регистрах, в памяти и какой тип самого прыжка..........но вас это не должно волновать). В общем здесь используй <=


 
Anatoly Podgoretsky ©   (2002-04-08 23:33) [6]

Это должно волновать, если предсказание не выполнится то будет пеналти. А если не волнует, то конечно <= лучше, так как на одно нажатие клавиш меньше


 
ION T   (2002-04-09 00:03) [7]

Именно поэтому repeat..until хуже, но здесь выполняются оба........а если не выполняются, то, по моему, оно вообще один цикл занимает на инремент EIP......

Но аргумент о меньшем количестве нажатий клавиш мне однозначно нравится;)


 
Anatoly Podgoretsky ©   (2002-04-09 00:25) [8]

Так вопрос то такой, а если бы автор интересовался результатом, то посмотрел бы CPU view



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

Текущий архив: 2002.05.20;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.018 c
14-64840
phantom2040
2002-04-09 08:38
2002.05.20
Программа для создания инсталяций


3-64559
SB.John
2002-04-24 15:33
2002.05.20
InterBase 6.0


1-64710
demon-777
2002-05-06 18:04
2002.05.20
Как скрыть и показать курсор


7-64855
Lord Vader
2002-02-14 03:59
2002.05.20
Система


1-64728
AVeR
2002-05-04 07:31
2002.05.20
Получить имя файла из полного пути