1.关于图像性能Tips1.1 位图格式对比矢量图格式Qt支持任何标准图像格式,包括PNG和JPEG等位图格式,以及SVG等矢量图形格式。与位图图像相比,渲染SVG图像很慢。 1.2 异步加载大图像如果同步加载图像,则会阻塞UI界面。在许多情况下,图像不需要立即可见,因此它们可以是延迟加载的。
1.3 避免调整和缩放
1.4 大图像使用sourceSize属性图像通常是QML用户界面中使用占用最大的内存。
1.5 仅在必要时启用Image的smooth属性启用smooth属性对性能不利。使用自然大小的图像或禁用动画中的平滑(smooth)处理。
1.6 避免由多个元素组成图像由单个图像组成的图像比由多个元素组成图像效率更高。
2.关于列表性能Tips2.1 确保您的数据模型尽可能快在许多情况下,慢速模型(slow model)实际上是列表滚动性能的瓶颈。请确保数据模型尽可能快。
2.2 在ListView/GridView中使用CacheBuffer在某些情况下,cacheBuffer在改善ListView/GridView性能方面很有用。默认的cacheBuffer为零。
http://doc.qt.io/qt-5/qml-qtquick-listview.html#cacheBuffer-prop 2.3 避免无用的绘画你应该防止在同一个区域重复绘画。例如,如果您提供了应用程序的背景,则可以防止QDeclarativeView绘制其窗口背景: QDeclarativeView window; window.setAttribute(Qt::WA_OpaquePaintEvent); window.setAttribute(Qt::WA_NoSystemBackground); window.viewport()->setAttribute(Qt::WA_OpaquePaintEvent); window.viewport()->setAttribute(Qt::WA_NoSystemBackground); 此外,考虑使用Item作为根元素而不是Rectangle,以避免多次绘制背景:
http://doc.qt.io/qt-5/qtquick-performance.html#rendering 3.使用动态加载优化性能如果需要解析大量QML,则QML应用程序会缓慢启动。如果整个应用程序在一个代码量巨大的QML文件中实现,就会发生这种情况。明智地将应用程序划分为逻辑实体,在开始时加载最小QML,然后再使用加载器Loader根据需要加载更多QML。
http://doc.qt.io/qt-5/qml-qtquick-loader.html 4.其他QML的一些性能Tips如果您有一个固定长度的简单列表,您可以尝试使用Flickable+Column+Repeater来优化性能,而不是使用QML的ListView。虽然创建列表会慢一些,但是列表滚动会更流畅。 4.1 在过渡动画中尽可能为屏幕的小区域设置动画如果您需要在一秒钟内移动3个元素,请尝试每次移动300毫秒。该系统可以计算需要重新绘制的项的边界,并在这些边界内绘制所有内容。 4.2 避免复杂的裁剪您应该只在真正需要的时候启用裁剪clip功能。默认clip值为false。
4.3 如果从QML文件中去掉注释或空白,是否有助于提高性能?不是真的。这些文件在启动时被重新处理为二进制内存表示,因此到运行时应该不会有性能差异。您可能很幸运,获得了0.5%的改进,然后只在启动时(QML解析就是在这里完成的),其他地方都没有。 4.4 避免不必要的转换如果属性的给定值与属性指定的类型不匹配,QML将执行类型转换。这种转换会消耗额外的内存。
property string messageAvatar: ""
property url messageAvatar: "" 4.5 小心字符串操作
最后
http://doc.qt.io/qt-5/qtquick-performance.html
https://wiki.qt.io/Performance_tip_Images https://wiki.qt.io/Performance_tip_Lists https://wiki.qt.io/Performance_tip_Use_Loaders https://wiki.qt.io/Performance_tip_QML_other ---------------------------------------------------------------------------------------------------------------------- 我们尊重原创,也注重分享,文章来源于微信公众号:Qt君,建议关注公众号查看原文。如若侵权请联系qter@qter.org。 ---------------------------------------------------------------------------------------------------------------------- |