Форум: "Потрепаться";
Текущий архив: 2002.05.20;
Скачать: [xml.tar.bz2];
Внизкакое условие выхода/продолжения цикла лучше использовать Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.006 c