我有一个3D矢量类。私有变量是定义的:
union { struct { double x; double y; double z; }; double data[3]; };
在实现operator ==时哪个更快?
return this->x == v.x && this->y == v.y && this->z == v.z;
OR
return memcmp(this->data, v.data) == 0;
答案 0 :(得分:15)
不幸的是,这两者并不相同。 (特别是NaN和带符号的零不在FPU内部使用按位比较。)
所以你应该根据正确性而不是速度做出选择。