【问题标题】:Noticeable difference in RAM consumption and startup time between Qt 5.8 and Qt 5.7 QtQuickQt 5.8 和 Qt 5.7 QtQuick 在 RAM 消耗和启动时间上的显着差异
【发布时间】:2017-02-15 07:55:24
【问题描述】:

官方docs 说新Qt 5.8 发布:

在 Qt QML 和 Qt Quick 中发生了很多事情。 QML 引擎已获得对缓存 QML 二进制表示的支持 和JS文件在磁盘上,减少启动时间和内存消耗 引擎。

但似乎启动时间和内存消耗都没有得到改善,而且它变得更慢并且正在使用更多的 RAM。

我提供了一些测试。 创建了一个新的空白项目,启动了task manager,我看到的是:

内存使用情况:

Qt 5.8 18.8 mb

Qt 5.7 14.2 mb

启动时间:

当我通过 URL 将新项目推送到 StackView 时,大约有一秒钟的差异

那么他们改进了什么?

【问题讨论】:

  • 我怀疑这会超出拍摄黑暗的任何地方。您是否尝试过更复杂的示例?也许引擎变大了,但 QML 文件的内存消耗变小了?对于启动时间我不知道,但是由于提到了 caching,它在第一次启动时没有帮助,并且可能没有为各种来源提供可缓存性。但正如我所说:我只是猜测。
  • 这个问题很有趣!
  • @derM 是的,我试过了。我的主要项目有超过 20k 行代码显示大约 30mb 的差异。 Maybe the engine got bigger, but the memory consumption for the QML files is smaller? 可能是这个原因。

标签: qt qml qtquick2 qt5.7 qt5.8


【解决方案1】:

.qml/.js 文件中的现金代码和数据结构将在第一次启动时生成。生成的 .qmlc 和 .jsc 缓存文件将用于进一步启动,因此您的应用第一次启动时不会看到任何差异。

我的主要项目有超过 20k 行代码

这还取决于你的 qml 代码的排列方式和你的 qml 文件有多大,你需要在启动时尽量减少创建 qml 对象,将你的 qml 文件分成逻辑单元并尽可能使用 Loader。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多