Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 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
2-1164131457
Фесс
2006-11-21 20:50
2006.12.10
Работа со списком


1-1162226777
Master_
2006-10-30 19:46
2006.12.10
Работа с MIDI в Delphi


15-1163769802
saxon
2006-11-17 16:23
2006.12.10
прикольный тест


15-1163685346
Чапаев
2006-11-16 16:55
2006.12.10
"Детям 60-70-80х посвящается"


2-1164372325
i-am-vladko
2006-11-24 15:45
2006.12.10
разрешение екрана





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский