Может ли наследование класса от 'enable_shared_from_this' повысить производительность?

make_shared более производительна, чем отдельный вызов new и создание shared_ptr , потому что make_shared выделяет место для счетчика ссылок и слабого счетчика в том же блоке памяти, что и экземпляр клиентского объекта (фактически давая ] shared_ptr большинство преимуществ производительности intrusive_ptr ).

enable_shared_from_this дает общий указатель без ссылки на какой-либо общий указатель. Следовательно, такие вещи, как ссылка и слабый счетчик, должны быть каким-то образом доступны изнутри клиентского объекта. Следовательно, для enable_shared_from_this было бы разумно вызвать навязчивый счетчик, аналогичный make_shared .

Однако я понятия не имею, как что-то подобное может быть реализовано (и я не уверен, что буду следить за тем, что там происходит, даже если посмотрю на реальный источник).

Имеет ли смысл тогда (по соображениям производительности) пометить мой класс меткой enable_shared_from_this , если я знаю он будет использоваться только как shared_ptr и никогда как необработанный объект?

18
задан Xeo 19 December 2011 в 00:33
поделиться