Top.Mail.Ru
Ответы
Аватар пользователя
12 лет назад
от
Изменено

Какая операция работает быстрее?

Надо сравнить два числа "x" и "y".

Что лучше делать, обычный оператор сравнения или битовый оператор исключающего "или" (XOR)?

if(x ==y)

или

if(x ^ y)

Что предпочтительнее с точки зрения процессора.

Только авторизированные пользователи могут оставлять свои ответы
Дата
Популярность
Аватар пользователя
Новичок
12лет

Во-первых, это разные операции. Например,
if(1^1)не выполняется, а
if(0^-1)выполняется.
Во-вторых, это крайне существенно зависит от компилятора, настроек оптимизации и целевой архитектуры.
TEST EAX,EBX работает с той же скоростью, что и все остальные битовые операции - это, по сути, AND без записи результата, только с выставлением флагов. А вот CMP медленнее (хотя опять же - это зависит... )
Ну и в-третьих, тебе что, проверить религия запрещает?

Аватар пользователя
Просветленный
12лет

Для целых чисел сравнение должно свестись к
cmp x,y
je ...
xor же :
xor x,y
jnz ...
Т. е. разница должна быть в cmp и xor (вроде одно число тактов)

Аватар пользователя
Гуру
12лет

с точки зрения процессора предпочтительнее писать на ассемблере