qt — Создание экземпляров объектов C ++ из QML приводит к огромным накладным расходам памяти

Создание QObject Производный класс в куче в C ++ дает мне примерно 160 байт на объект.

Регистрация того же объекта через qmlRegisterType() для создания из QML и создания объекта динамически через createObject() дает мне чуть более 2000 байтов на объект.

Это большая разница: при создании из QML используется почти в 13 раз больше памяти на объект. Обратите внимание, что объект не имеет никаких привязок или чего-то дополнительного по сравнению с тем, как он есть в C ++.

Естественно, существо QObject производный означает, что это невидимый объект. Так что это не должно иметь каких-либо дополнительных издержек, что касается рендеринга графа сцены.

Обратите внимание, что я запускал тесты со значительным количеством объектов несколько раз, получая согласованные результаты и пропорционально увеличивая масштаб, поэтому маловероятно, что это происходит из-за некоторого отклонения или предварительного выделения памяти механизма QML.

Почему это происходит? Это нормально? Есть ли способ уменьшить его?

4

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]