Главная страница
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.016 c
14-64778
VictorT
2002-04-09 12:55
2002.05.20
Наверно торможу, но ...


4-64889
o_viz2000
2002-03-16 21:43
2002.05.20
MAIL SLOTS


3-64485
IrenFD
2002-04-22 15:13
2002.05.20
Автоматическое открытие Lookup поля в DBGrid


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


1-64672
turonix
2002-05-05 18:34
2002.05.20
Как в подпрограмму передать динамический двумерный массив?