Модераторы: Poseidon

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Алгоритм]сравнивать на равенство или на больше, что быстрее  
:(
    Опции темы
GoldFinch
Дата 7.3.2009, 10:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: 1
Всего: 26



Rififi, в релизе при работе с вещественными числами он и не такое использует
PM MAIL ICQ   Вверх
babe
Дата 7.3.2009, 10:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 11.9.2007

Репутация: нет
Всего: нет



Вот и ответ!smile
Цитата

любой компилятор\интерпретатор компилирует высокоуровневый код языка в некоторый низкоуровневый код
сравнение двух чисел производится их вычитанием друг из друга, больше\меньше\равно соответствует положительному\отрицательному\нулевому результату этого вычитания


GoldFinch, спасибо

Цитата

проверка числа на ноль может быть вынесена в отдельную инструкцию, требующую 1 операнд и не выполняющую никаких арифметических\логических действий
 - каким образом?smile
PM MAIL   Вверх
zim22
Дата 7.3.2009, 11:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 16
Всего: 69



babeGoldFinch уже ответил каким образом:

Цитата(GoldFinch @  6.3.2009,  13:03 Найти цитируемый пост)
обычно для проверки на равенство нулю юзают test eax,eax\jz xxx а для сравнения с нулем cmp xxx,0\jxx zzztest eax,eax короче и может гдето быстрее




--------------------
PM MAIL   Вверх
GoldFinch
Дата 7.3.2009, 11:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: 1
Всего: 26



babe, все зависит от платформы 
Если платформа аппаратная - конкретное семейство процессоров (например х86) то инструкции аппаратные и проверка на 0 выполняется аппаратно, например операцией ИЛИ для всех разрядов числа.
Если платформа программная - виртуальная машина которая обрабатывает байт-код (java, .NET) то ее инструкции выполняются виртуальной машиной, путем выполнения кода на конкретной аппаратной платформе.
Вобщем если платформа поддерживает отдельную инструкцию проверки на 0, то она какнибудь ее реализует smile При этом если инструкции имеют разную длину и разное время выполнения, то отдельная инструкция проверки на 0 будет короче инструкции сравнения (т.к. только 1 операнд), и возможно быстрее. В любом случае оптимизацией такого рода должен заниматься компилятор а не программист.

PM MAIL ICQ   Вверх
babe
Дата 7.3.2009, 12:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 11.9.2007

Репутация: нет
Всего: нет



угу, все понятно- что ж тут непонятного.
Спасибо!smile
Конечно инструкция с одним операндом выполнится быстрее, чем с двумя.
Меня просто смутило "не выполняет никаких логических действий".

PM MAIL   Вверх
alexanderwdark
Дата 10.3.2009, 15:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 20.2.2009

Репутация: нет
Всего: нет



Говоря о оптимизации, сложно вести речь о интерпретаторах и о компиляторах, не генерирующих машинный код. Быстродействующие решения принципиально не разрабатываются для виртуальных машин, реалтайм интерпретаторов да и dotnet. Что касается последней - по причине значительной общипанности последней и переходу к ограниченному безопасному программированию.  Область оптимизаци  - ASM, C/C++ без классов,  Delphi/FPC/GPC без классов.  Здесь возможен наиболее оптимальный код, в частности, наиболее эффективная реализация компрессоров, криптосистем и прочих критичных по времени алгоритмов.

Если речь идет о JavaScipt - тут говорить нечего. Все зависит от конретной реализации машины браузером, подобная оптимизация здесь особенно ничего не решит.

Подумайте лучше о алгоритмической оптимизации.  Чаще всего в подобных случаях помогает выбор более разумного алгоритма. К примеру, замена алгоритмов сортировки, простейшее хэширование при поиске и прочее..

Это сообщение отредактировал(а) alexanderwdark - 10.3.2009, 15:57
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.0440 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.