LINUX.ORG.RU

Какая операция быстрее: > или == ?


0

0

Вопрос возник из-за непонимая того, как эти операции выполняются. Что-то типа вопроса "Что быстрее: ++i или i++?".
Интересует, как выполняются разные элементарные операции. Где об этом можно почитать?


> Где об этом можно почитать?

В справочном руководстве по ассемблеру для используемой архитектуры.

tailgunner ★★★★★
()

Одинаково. Обычно выполняется операция сравнения (если она есть на данной архитектуре cmp - для х86) или какая-либо математическая операция (например вычитание - cmp на х86 эквивалентна sub без сохранения результата) и потом анализируют состояние флагов процессора (z,c).

koTuk
()

По сравнению с последующим джампом время на сравнение - пренебрежимо мало.

anonymous
()
Ответ на: комментарий от tailgunner

>> Где об этом можно почитать?

>В справочном руководстве по ассемблеру для используемой архитектуры.


в большинстве случаев все операции сравнения работают везде через одну инструкцию.

generatorglukoff ★★
()
Ответ на: комментарий от generatorglukoff

> в большинстве случаев все операции сравнения работают везде через одну инструкцию.

Когда я читаю такие фразы, я плАчу 2 раза: один раз от потрясающе однозначной формулировки, а второй - от своего скудоумия, ибо не понимаю, что сравнивают эти сферические однотактовые инструкции сравнения.

tailgunner ★★★★★
()
Ответ на: комментарий от KRoN73

> или «>» быстре, чем «==».
или «==» быстре, чем «>» =)

struct Foo
{
  int a;
  int b;
  int c;

  bool operator<(const Foo & other) const 
  {
    return a < other.a || a == other.a && (
	b < other.b || b == other.b && (
	    c < other.c
          )
      );
  }

  bool operator<(const Foo & other) const 
  {
    return a == other.a && b == other.b && c == other.c;
  }
}

правда тут всё зависит от входных данных.

stpg
()
Ответ на: комментарий от stpg

Я про дефолтовые реализации ЯВУ. Сравнение может производиться к базовому целому или плавающему типу на этапе компиляции, а вот сравнение ещё боксинг может задействовать.

KRoN73 ★★★★★
()
Ответ на: комментарий от KRoN73

Действительно всё скорее всего будет упираться в архитектуру. На x86 скорее всего, что "==" по быстродейтсвую аналогична всем другим операциям сравнения. Но есть некоторые арх., где сущ. спец. команды типа jmpeq arg1, arg2, т.е. сравнение и последующий переход происходят не в 2, а в одну команду.

fukazzz
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.