Memory comparison, which is faster?
I have a 3D vector class. The private variables are defined:
union { struct { double x; double y; double z; }; double data[3]; };
In implementing operator==, which is faster?
return this->x == v.x && this->y 开发者_如何转开发== v.y && this->z == v.z;
OR
return memcmp(this->data, v.data) == 0;
Unfortunately the two aren't equivalent. (Specifically NaNs and signed zeros don't use bitwise comparison inside the FPU).
So you should make your choice based on correctness, not speed.
精彩评论