这些示例和使用之间的性能会有差异吗< or == operators?
struct Data {
int x;
int y;
bool operator<(const Data& other) const {
if (x != other.x) return x < other.x;
return y < other.y;
}
bool operator==(const Data& other) const {
return x == other.x && y == other.y;
}
bool operator>(const Data& other) const {
return !(*this < other) && !(*this == other);
}
};
struct Data {
int x;
int y;
auto operator<=>(const Data& other) const = default;
};
我在反汇编中看到我们有开销函数调用 https://godbolt.org/z/17EbTabG5
https://godbolt.org/z/5bjcMqc4b - 此示例显示了具有不同实现的 2 个类的 GCC 汇编器之间的细微差别。而且差异很小。
这里的第一个数据具有更快的排序比较,但是 第二个数据具有更快的平等性
https://godbolt.org/z/ozTcvb848 - 在同一个示例中,如果我们选择Clang,我们将看到汇编器完全没有区别。
感谢fow评论和示例Drew Dormann