Главная страница
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.02 c
6-64752
DimaIv
2002-03-05 20:24
2002.05.20
Можно ли и если да то как как испльзуя FastNet получить


7-64857
gluka
2002-02-16 02:47
2002.05.20
Как можно в вынь2к, ХР закрыть доступ к дисководу??? Есть ли что то для етого в АПИ??


1-64609
Axon
2002-05-07 00:48
2002.05.20
Панель задач Windows


14-64811
alexandr
2002-04-11 08:57
2002.05.20
test


14-64812
Valentain
2002-04-11 10:24
2002.05.20
Проверка работоспособности под разными ОСями