Будет ли оператор космического корабля 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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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