【问题标题】:QML pre-compilation to bytecode, is it possible?QML预编译为字节码,可以吗?
【发布时间】:2013-06-08 20:08:16
【问题描述】:

我正在尝试针对速度和内存优化一些 QML 代码。

我知道可以创建一个 Qt 资源文件 (*.rcc) 来减少 *.qml 文件空间。虽然我没有关于此步骤获得多少改进/压缩的数字。
Qt/QML Compiling libraries and resources查看操作方法

但是,我也知道在some people heads roadmap before 中将 QML 文件预编译为字节码,因此在运行时可以避免此步骤。

那么,有人知道是否可以在任何已发布的 Qt 版本中预编译 QML?或有任何计划?

【问题讨论】:

  • QML 基本上是 JavaScript/CSS。有 HTML/CSS/JavaScript 压缩工具。基本上,它们最小化变量名并去除空白。您可以将这些工具重新用于QML。例如CSS compactor。由于 size 是您的标准,因此使用 compressor 优于 byte-code。例如 LZOLZMAGZIP 等。有一个 JIT 版本的 JavaScript 引擎,但每个 CPU 不同。
  • 为了避免我解释得不好,目的不只是size,还追求减少加载时间。 @artlessnoise您尝试过任何工具吗? 100% 成功了吗?
  • 我没有用 QML 尝试过这些。它们只是许多众所周知的用于减小 HTML/CSS/Javascript 大小的工具。如果速度是您的目标,那么只有 Qt QML 加载器可以让它更快;那不存在afaik。
  • 据我所知,Javascript 的使用必须是最少的,不应该用于性能特定的代码。如果您担心 QML 的性能,那么可以使用 QML 分析器对其进行分析并进行相应的更改。
  • QML 不仅仅是 javascript/CSS。它包含 javascript。

标签: qt embedded qml


【解决方案1】:

Qt 5.3 是可能的:

http://doc.qt.digia.com/QtQuickCompiler/

"Qt Quick Compiler 是 Qt Quick 的开发插件 允许您将 QML 源代码编译到 最终二进制。当您使用此插件时,应用程序的启动时间 显着改进,您不再需要部署 .qml 文件 连同应用程序。”

【讨论】:

  • AFAIK,需要企业许可证。查看 QT 5.3 新闻稿 (blog.qt.digia.com/blog/2014/05/20/qt-5-3-released)
  • 你说得对,他们是这么说的:“在 Qt 5.3 中,我们首次介绍了 Qt Enterprise 版本下可用的新专业构建工具”
【解决方案2】:

QML预编译成字节码,可以吗?

很遗憾,目前还不可能。此外,这是一个相当大的功能请求,因此可能不会很快得到支持。当然,在即将到来的 5.2 中我们不会在一周内冻结功能,但很可能在明年夏天甚至不会 5.3,等等。

我刚刚与其中一位开发人员讨论了这个问题,所以你现在可能需要忍受(退出)它。我也在询问是否要创建一个 jira 报告来跟踪这一点,但有人告诉我,像不久前为声明性存储库重写的 v4 引擎那样,那里没有跟踪如此大的功能请求。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-27
    • 2021-04-22
    相关资源
    最近更新 更多