Будет ли оператор космического корабля C++20 использоваться для сравнения равенства и неравенства?C++

Программы на C++. Форум разработчиков
Anonymous
Будет ли оператор космического корабля C++20 использоваться для сравнения равенства и неравенства?

Сообщение Anonymous »

Начиная с C++20, стандартная библиотека использует оператор космического корабля для реализации сравнения строк и векторов (согласно этому видео). Я обеспокоен тем, что это может привести к значительному снижению производительности!
Позвольте мне объяснить на примере оператора != для строки:
  • Когда я пишу str1 != str2, компилятор преобразует это в (str1 str2) != 0.
    Однако эффективная реализация != для строки сначала проверил бы str1.size() != str2.size(), и только в случае неудачи перешел бы к сравнению фактических символов.
  • Эта оптимизация не может быть реализована для оператора космического корабля, так как ему в любом случае придется определять «большую» строку.
Итак, если это правда, как сейчас сравниваются строки на предмет неравенства, разве это не огромная потеря производительности?

Подробнее здесь: https://stackoverflow.com/questions/657 ... omparisons

Вернуться в «C++»