Создание QObject
Производный класс в куче в C ++ дает мне примерно 160 байт на объект.
Регистрация того же объекта через qmlRegisterType()
для создания из QML и создания объекта динамически через createObject()
дает мне чуть более 2000 байтов на объект.
Это большая разница: при создании из QML используется почти в 13 раз больше памяти на объект. Обратите внимание, что объект не имеет никаких привязок или чего-то дополнительного по сравнению с тем, как он есть в C ++.
Естественно, существо QObject
производный означает, что это невидимый объект. Так что это не должно иметь каких-либо дополнительных издержек, что касается рендеринга графа сцены.
Обратите внимание, что я запускал тесты со значительным количеством объектов несколько раз, получая согласованные результаты и пропорционально увеличивая масштаб, поэтому маловероятно, что это происходит из-за некоторого отклонения или предварительного выделения памяти механизма QML.
Почему это происходит? Это нормально? Есть ли способ уменьшить его?
Задача ещё не решена.
Других решений пока нет …