Почему `QDateTime` реализует неявный обмен? - PullRequest
4 голосов
/ 25 июня 2019

Согласно документации неявное совместное использование выполняется в основном для повышения производительности (избегая копирования и автоматического копирования при изменении).

Почему это реализовано для класса QDateTime, который долженвидимо будет просто небольшое количество байтов?Я бы сказал, что стоимость выделения кучи и синхронизации потоков для обновления подсчета ссылок намного превысила бы небольшой выигрыш от не копирования нескольких байтов.

1 Ответ

2 голосов
/ 25 июня 2019

Краткий ответ: это дешевле.

Длинный ответ: Qt разработан вокруг шаблона PIMPL . Создание реальной копии объекта означает, что вам нужно выделить новую кучу для PIMPL и скопировать обе. Особенно новое распределение довольно дорого для небольших объектов. Чтобы преодолеть эту проблему, они решили реализовать функцию копирования при записи для многих, даже небольших классов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...