本文介绍了内存比较,这比较快?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个3D向量类。私有变量被定义:
union {
struct {
double x;
double y;
double z;
};
double data [3];
};
在实现运算符==,哪个更快?
return this-> x == vx && this-> y == vy && this-> z == vz;
或
return memcmp > data,v.data)== 0;
解决方案不幸的是,两者不等同。 (特别是NaN和有符号的零不使用FPU内部的逐位比较)。
所以你应该根据正确性而不是速度来选择。 b $ b
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.
这篇关于内存比较,这比较快?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!