Qt:5.8新特性,qmlc使用以及效果

来源:互联网 发布:创意视频制作软件 编辑:程序博客网 时间:2024/05/19 10:09

关于qmlc

5.8在昨天终于发布了,在很艰辛的下载后,终于在今天用上了。
在5.8各个新特性中,我特别看重qmlc这个。

那么qmlc是个什么东西呢,官方的描述是这样的

Implemented caching of code and data structures generated from .qml and .js files to disk, reducing start-up time and memory consumption. The resulting .qmlc and .jsc cache files are memory mapped.

就是说把已经生成好的内存结构体放在了本地,以加速下次加载。
也就是说,是用来缩减编译时间的。
注意不要被迷惑了,这里讲的代码和结构 code and data structures ,特指编译时的产物,开发的时候是不能直接接触的。

而关于编译时间,经常使用profiler的朋友应该也应该会注意到,对于QtQuick程序的加载,编译是一个非常耗时的开销,巴不得去掉它。
以前有Quick编译器,但是只有企业版有,开源版只能望尘莫及。
但是现在5.8,官方拿出了qmlc,还是说非常有诚意的。让开源版的小伙伴们也能体验到快速加载。

使用qmlc

其实在安装完qmlc后,我还在想要怎么使用。不过偶然间,发现在本地发现了qmlc文件,才发现这个是不需要配置的,默认就是开启。
我的qml文件是暴露在本地的,并且QQmlApplicationEngine直接加载在本地的qml文件运行。
这里写图片描述

然后很激动了跑了下profiler,一共两次,第一次是删除了所有的qmlc文件下跑的,也就是不带缓存,第二次是在有qmlc文件下跑的

第一次:
这里写图片描述

第二次:
这里写图片描述

果然名不虚传,在缓存到本地后,编译速度被大幅度缩减。
从16毫秒,缩减到了2毫秒。

不过到了这里,我知道有小伙伴要说了,14毫秒加速,有什么实际意义嘛。
所以我要说下,我这个只是一个很简单的工程,代码也就一点点。而且我是性能不错的PC上。如果在移动端或者嵌入式端,这就有非常明显的意义了。有可能是2秒,缩减到300毫秒这样的提升。

后来多试验了几次发现,要生成qmlc,不一定要把qml放在本地,放在qrc里也是可以的。
如果是放在qrc里面的话,qmlc会存储在文件系统中一个合适的位置放qmlc文件。文件名看起来是一个摘要值。
对于Windows,位置就是 AppData\Local\exe名字\cache
对于macOS,位置就是Library/Caches/app名字/qmlcache/

另外吐槽一下,官方对这个qmlc描述实在太少了,截止我写这个blog,我只在5.8新特性中找到那一句话,也就是上面那句。其他描述,比如说怎么关闭也没找到。如果有人找到了望分享下。

1 0
原创粉丝点击