Какая операция работает быстрее?
Надо сравнить два числа "x" и "y".
Что лучше делать, обычный оператор сравнения или битовый оператор исключающего "или" (XOR)?
if(x ==y)
или
if(x ^ y)
Что предпочтительнее с точки зрения процессора.
Во-первых, это разные операции. Например,
if(1^1)не выполняется, а
if(0^-1)выполняется.
Во-вторых, это крайне существенно зависит от компилятора, настроек оптимизации и целевой архитектуры.
TEST EAX,EBX работает с той же скоростью, что и все остальные битовые операции - это, по сути, AND без записи результата, только с выставлением флагов. А вот CMP медленнее (хотя опять же - это зависит... )
Ну и в-третьих, тебе что, проверить религия запрещает?
Для целых чисел сравнение должно свестись к
cmp x,y
je ...
xor же :
xor x,y
jnz ...
Т. е. разница должна быть в cmp и xor (вроде одно число тактов)
с точки зрения процессора предпочтительнее писать на ассемблере