Форум: "Прочее";
Текущий архив: 2006.12.10;
Скачать: [xml.tar.bz2];
ВнизБыть или не быть? Найти похожие ветки
← →
Krants (2006-11-17 15:52) [0]Недавно знакомый задал мне очень простой вопрос, долго думал но конкретного ответа так и не смог дать. В чем суть, существует самый простой логический оператор, покажу в примере сравнения переменных:
If i<>k then ...
что он означает и так всем понятно, но вот тут возникает дилема, а не эфективнее было бы использовать данный оператор таким образом:If i=k then
begin
end
else
...
дело в том что принципа работы оператора я не знаю, как происходит сравнивание(опер-а "<>")?, он переберает диапазн значений переменной или по аналогии как предложено во втором примере?
Вопрос конечно смешной, но очень таки принципиальный, использование подобного сравнения в единичном случае не существенно проблематично, а в не единичном?...
← →
Джо © (2006-11-17 15:53) [1]См. ассемберный листинг и да пребудет с тобой Понимание :)
← →
Игорь Шевченко © (2006-11-17 15:54) [2]
> а не эфективнее было бы использовать данный оператор таким
> образом:
Так строчек больше - значит неэффективнее
← →
DrPass © (2006-11-17 15:54) [3]
> он переберает диапазн значений переменной
Нет, конечно. С точки зрения компьютера <> и = абсолютно равноценные операции, и та, и другая выполняются мгновенно за один такт
← →
DrPass © (2006-11-17 15:55) [4]
> Джо © (17.11.06 15:53) [1]
Ты наивно полагаешь, если человек задает такой вопрос, ему поможет ассемблерный листинг?
← →
PEAKTOP © (2006-11-17 15:55) [5]
if not(i=k)then
begin
...
end;
Устроит ?
← →
clickmaker © (2006-11-17 15:55) [6]пессимисты пишут сначала <>, оптимисты - =
← →
Rouse_ © (2006-11-17 15:56) [7]
> Вопрос конечно смешной, но очень таки принципиальный, использование
> подобного сравнения в единичном случае не существенно проблематично,
> а в не единичном?...
Это два идентичных выражения, бо оптимизация :)
← →
Игорь Шевченко © (2006-11-17 15:57) [8]С точки зрения компьютера желательно, чтобы код, выполняющийся после наиболее вероятного условия был сразу после операции сравнения.
← →
wal © (2006-11-17 15:58) [9]
> Krants (17.11.06 15:52)
> If i=k then
> begin
> end
> else
begin end можно не писать ;)
← →
Sergey13 © (2006-11-17 16:01) [10]> [0] Krants (17.11.06 15:52)
При написании SQL запросов такая логика может работать и давать неплохие результаты.
← →
Anatoly Podgoretsky © (2006-11-17 16:10) [11]> Игорь Шевченко (17.11.2006 15:54:02) [2]
> Так строчек больше - значит неэффективнее
С точки зрения набивания кода?
← →
Игорь Шевченко © (2006-11-17 16:11) [12]Anatoly Podgoretsky © (17.11.06 16:10) [11]
Читать и набивать неудобно
← →
Anatoly Podgoretsky © (2006-11-17 16:12) [13]> DrPass (17.11.2006 15:54:03) [3]
пол такта, на пред предпоследних версиях процессоров.
На предпоследних за один такт до 5 команд.
На последнихтрудно сказать, но вроде уже больше времени требует.
← →
oldman © (2006-11-17 16:12) [14]
> но вот тут возникает дилема, а не эфективнее было бы использовать
> данный оператор таким образом:
Нет, не эффективней, поскольку непонятно, а в чем тут эффективность...
← →
Anatoly Podgoretsky © (2006-11-17 16:33) [15]> Игорь Шевченко (17.11.2006 15:57:08) [8]
Так, но какой код сгенерирует компилятор, прямой или обратный сказать не глядя в окно сможешь?
А если сменить его на обратный изменится ли код?
← →
Anatoly Podgoretsky © (2006-11-17 16:34) [16]> Игорь Шевченко (17.11.2006 16:11:12) [12]
Вот и я про это и больше другой разницы нет
← →
Игорь Шевченко © (2006-11-17 16:54) [17]Anatoly Podgoretsky © (17.11.06 16:33) [15]
MS этим приемом повышает быстродействие своих системных библиотек, упорядочивая код так, чтобы при наиболее вероятных случаях минимизировать число ошибок страниц.
← →
Плохиш © (2006-11-17 17:03) [18]Код должен быть красивым. Только красивый код работает так как задумано. А в не красивом коде изначально заложены кучи багов.
← →
Jeer © (2006-11-17 17:09) [19]
> Только красивый код работает
Это очень верно и более того, "умный" компилятор, словив кайф от красивого кода, "сам" найдет наиболее оптимальное воплощение.
Программисту надо лишь чуть помочь ему.
← →
Krants (2006-11-17 17:35) [20]
> Sergey13 ©
> При написании SQL запросов такая логика может работать и
> давать неплохие результаты.
согласен
> DrPass ©
Ты наивно полагаешь, если человек задает такой вопрос, ему поможет ассемблерный листинг?
ты хочешь сказать что ты сам разберешь ассемблерный листинг такого оператора?
Это тебе не бейсик 1.01, подобие сравнения чисел можно реализовать с пом. примитивной микросхемки... а вот как ты реализуещь сравнение параметров других типов(строки, чары, варианты(которые и не сравниваются))?
← →
Marser © (2006-11-17 17:40) [21]> [18] Плохиш © (17.11.06 17:03)
> Код должен быть красивым. Только красивый код работает так
> как задумано. А в не красивом коде изначально заложены кучи
> багов.
По-моему, ещё Григорий Саввич Сковорода говорил примерно о том же. Хорошее не выглядит плохо, Бог его изначально сделал красивым и приятным, у нас просто, увы, извращенный взгляд на хорошее и плохое...
← →
Stexen © (2006-11-17 19:35) [22]В обоих случаях(за исключением сложных структур), идет вычетание и проверка флага zf, так что одно и то же в принцыпе
← →
MsGuns © (2006-11-18 01:02) [23]>DrPass © (17.11.06 15:54) [3]
>Нет, конечно. С точки зрения компьютера <> и = абсолютно равноценные операции, и та, и другая выполняются мгновенно за один такт
Я бы не был столь категоричен ;)
← →
Oreolek © (2006-11-18 11:59) [24][21]
Хорошее - это когда твой код переносят на другую машину...и он работает!
Плохое - это когда он не работает даже на твоей.
В принципе,упрощенное понятие,но действенное.
← →
Alex Konshin © (2006-11-18 13:12) [25]
> Игорь Шевченко © (17.11.06 16:54) [17]
>
> Anatoly Podgoretsky © (17.11.06 16:33) [15]
>
> MS этим приемом повышает быстродействие своих системных
> библиотек, упорядочивая код так, чтобы при наиболее вероятных
> случаях минимизировать число ошибок страниц.
Расчет не только и не столько на страницы, а на кеш.
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2006.12.10;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.044 c