Является ли std::string ниже QString?



Мой коллега утверждает, что реализация и особенно управление памятью std::string уступает реализации QString в библиотеке Qt. К каким аспектам std::string это тоже может относиться?

692   2  

2 ответов:

Что касается управления памятью, QString использует функцию копирования при записи, которая теперь явно запрещена в стандартной библиотеке C++. Но для этого есть причина. Идиома копирования при записи работает хуже в многопоточной среде, поскольку она требует синхронизации. в этой статье рассматриваются проблемы более подробно.

Реализации std::string с другой стороны, обычно используют оптимизацию малых строк (SSO), чтобы избежать любого динамического выделения памяти для небольших строк. Это и есть настоящее современное состояние струнных инструментов.

С управлением памятью вам придется решить, что лучше для вашего приложения. Но одно место, где QString явно сияет в отличие от std:: string, - это поддержка unicode. QString хранит кодированную UTF-16 строку внутри, в то время как std::string кодирует agnostic. Это часто значительно упрощает использование QString, а не std:: string, когда вам приходится иметь дело с пользовательскими многобайтовыми кодированными строками.

Comments

    Ничего не найдено.