为什么“ QDateTime”实现隐式共享?

时间:2019-06-25 10:15:49

标签: c++ performance qt

According to the documentation隐式共享主要是为了提高性能(避免复制和更改时自动复制)。

为什么要为显然应该只是少量字节的类QDateTime实现它?我要说的是,堆堆分配和用于引用计数更新的线程同步的成本将大大超过不复制几个字节的小收益。

1 个答案:

答案 0 :(得分:2)

简短的回答:它更便宜。

长答案:Qt是围绕PIMPL模式设计的。创建对象的真实副本意味着您必须为PIMPL分配新的堆并同时复制两者。特别是对于小对象而言,新的分配相当昂贵。为了克服这个问题,他们决定为许多甚至很小的类实现写时复制。