Главная страница
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.015 c
1-64642
RaZEr
2002-05-01 05:34
2002.05.20
Реализовать раскраску текста


3-64560
Мишган
2002-04-24 15:27
2002.05.20
dbiRegenIndexes


3-64503
Gamar
2002-04-20 12:15
2002.05.20
Cумма по ВЫЧИСЛЯЕМОМУ полю


3-64461
Саша
2002-04-25 07:46
2002.05.20
глюк Dbgrid


4-64875
Stormick
2002-03-19 21:23
2002.05.20
Мастера подмогите