在C ++中在堆上实例化QObject
派生类,每个对象大约有160个字节。
通过qmlRegisterType()
注册相同的对象以便从QML创建并通过createObject()
动态创建对象,这为每个对象提供了超过2000个字节。
差别很大,从QML创建时,每个对象的内存几乎是13倍。请注意,与C ++中的对象相比,该对象没有任何绑定或任何额外的内容。
当然,导出QObject
意味着它是一个不可见的对象。因此,就场景图渲染而言,它不应该有任何额外的开销。
请注意,我已经多次运行了大量对象的测试,获得了一致的结果并按比例放大,因此不太可能是由于某些差异或QML引擎内存预分配造成的。
为什么会这样?这是正常的吗?有没有办法减少它?