记忆比较,哪个更快?

Ant*_*ony 5 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;

要么

return memcmp(this->data, v.data) == 0;

Ben*_*igt 15

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

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