gpt4 book ai didi

qt - 性能 : Is it better to import objects in package or individually?

转载 作者:行者123 更新时间:2023-12-04 12:45:59 24 4
gpt4 key购买 nike

假设我有一堆要公开给 Qml 的 C++ 对象。

我可以想象两种方式:

第一种方法,每个对象一个导入语句

qmlRegisterType<Object1>("my.package.object1", 1, 0, "Object1");
qmlRegisterType<Object2>("my.package.object2", 1, 0, "Object2");
qmlRegisterType<Object3>("my.package.object3", 1, 0, "Object3");
qmlRegisterType<Object4>("my.package.object4", 1, 0, "Object4");
...

然后在 Qml 中我们在每个组件中导入我需要的东西

import my.package.object2 1.0 
import my.package.object3 1.0

Object2 { Object3 { } }

第二种方法所有对象的一个​​导入语句:

qmlRegisterType<Object1>("my.package", 1, 0, "Object1");
qmlRegisterType<Object2>("my.package", 1, 0, "Object2");
qmlRegisterType<Object3>("my.package", 1, 0, "Object3");
qmlRegisterType<Object4>("my.package", 1, 0, "Object4");
...

然后在 Qml 中我们导入每个组件中至少需要其中一个的所有对象

import my.package 1.0 

Object3 {
Object2 { ... }
Object1 { ... }
}

显然,将包中的对象分组更简单(只要有意义)。性能不应该是您的主要关注点。

就性能而言,一种方式优于另一种方式?

最佳答案

我不是 100% 确定,但我会说 QML 引擎在找到导入语句时会检查模块,因此如果您将所有类放在同一个模块中,它们将同时被发现,但如果您将它们分开,需要进行多次模块检测。

所以真正的答案是:

  1. 如果您在应用中使用了大部分对象,请将它们放在同一个模块中,这样通过一个模块检查就可以拥有所有这些对象(不使用的对象的开销很小,但是您正在节省新模块自省(introspection)的开销)。

  2. 如果您使用的项目很少,请将它们分开,以便“新模块开销”和“模块中未使用的对象”之间的比率更小

免责声明:无论如何,我们不知道“新模块检查”开销的基准,也不知道“模块中未使用的对象”开销的基准。

关于qt - 性能 : Is it better to import objects in package or individually?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42830786/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com