C++20 宇宙飞船运算符的性能问题?

Performance problems with the C++20 spaceship operator?

自 C++20 起,标准库使用 宇宙飞船运算符 来实现字符串和向量的比较(根据 this video)。我担心这会带来潜在的巨大性能损失!

让我解释一下 string 的运算符 != 的示例:

所以,如果这确实是现在比较字符串不等式的方式,这不是一个巨大的性能损失吗?

标准化委员会已在 http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1185r2.html 中解决了这个问题。该更改表示 a == ba != b 不调用 operator <=>,它们调用 operator==operator !=。您描述的行为是后来修订的 C++20 标准的临时版本。

链接的更改请求准确地给出了 std::vector 作为示例,其中 == 可以比 <=> 更有效地进行比较。