У меня есть 3D векторный класс. Частные переменные определяются:
union { struct { double x; double y; double z; }; double data[3]; };
В реализации оператора ==, который быстрее?
return this->x == v.x && this->y == v.y && this->z == v.z;
ИЛИ
return memcmp(this->data, v.data) == 0;
К сожалению, эти два понятия не эквивалентны. (В частности, NaN и нули со знаком не используют побитовое сравнение внутри FPU).
Таким образом, вы должны делать свой выбор, основываясь на правильности, а не на скорости.