记忆比较,哪个更快?

时间:2010-06-22 03:15:50

标签: c++ comparison

我有一个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;

1 个答案:

答案 0 :(得分:15)

不幸的是,这两者并不相同。 (特别是NaN和带符号的零不在FPU内部使用按位比较。)

所以你应该根据正确性而不是速度做出选择。