Performance QML中最有效的全局属性实现

Performance QML中最有效的全局属性实现,performance,qt,properties,qml,global,Performance,Qt,Properties,Qml,Global,我目前正在使用根qml文件中声明的属性,由于动态作用域,这些属性可以全局工作,但我担心它们最终会带来太多的查找开销,特别是当对象树变得更深时,它最终会这样做 也可以使用上下文属性对象,但是这会增加详细性,并且: 缺点是v4引擎无法处理动态数据 对象,例如通过StCutExtBrutType()从C++导出的对象。 包含此类动态对象的绑定将是 QV8绑定 据我所知,单例在查找性能方面应该更加高效,但它们更加冗长-既需要导入语句,也需要作为单例成员访问单个属性,而不是直接访问,最后但并非最不重要的一

我目前正在使用根qml文件中声明的属性,由于动态作用域,这些属性可以全局工作,但我担心它们最终会带来太多的查找开销,特别是当对象树变得更深时,它最终会这样做

也可以使用上下文属性对象,但是这会增加详细性,并且:

缺点是v4引擎无法处理动态数据 对象,例如通过StCutExtBrutType()从C++导出的对象。 包含此类动态对象的绑定将是 QV8绑定

据我所知,单例在查找性能方面应该更加高效,但它们更加冗长-既需要导入语句,也需要作为单例成员访问单个属性,而不是直接访问,最后但并非最不重要的一点是,当在网络上使用QML时,还有一个由来已久但尚未解决的问题,这是有害的

那么,考虑到以下标准,在QML中实现一组全局属性的最有效方法是什么:

  • 查找性能
  • 易用性/低冗长性
  • 设置的兼容性
    使值更改在应用程序运行期间保持不变
  • 必须支持值更改通知和自动绑定更新

什么是v4引擎?我使用C++中的动态对象,通过代码> SET CONTeXT属性,例如MyQuasVIEW .Cyt()-RooTeCutExter()> SETCONTeXT属性(“MSGLead”,MyQMLMSGBe::Stand());<代码>并且没有看到任何性能影响。@AlexanderVX-v4是一个新的速度更快的评估引擎,它是为避免v8 JIT开销和许可复杂性而编写的。对于简单表达式的求值,比如简单地获取某个对象的属性,它应该要快得多。查找需要多少微秒?然后,我将实现我自己的哈希映射(这里列出的一些解决方案:),并将我的方法与Qt的默认方法进行比较。然后,如果我自己的哈希更快,我会将其实现为QML类型,并使用此类型作为门来绕过QML属性系统。@Nulik-关键是这里实际上不需要查找,我只对一个和一个值感兴趣。QML的引擎已经达到了最快的速度,但作为一个动态查找,它仍然可以工作,我需要避免,特别是考虑到在最后阶段,将有数百个对象深入树中。遍历所有这些以获取值是没有意义的。查找性能是否是一个问题可能取决于您如何使用这些属性。如果它们用于绑定,那么查找可能是一次性的,即在绑定创建时。