QML Performance

1) Limit JavaScript

  a) inline JavaScript:  内联的JavaScript方法;
  1. 将js方法放置在Element内部; 2. 尝试将语句写在一行内; e.g.

Item {  
     function factorial(a) {  
        ...  
     }  
     MouseArea {  
         onClicked: console.log(factorial(10)) //try to avoid the {brace};  
     }  
 }

  b) 对于复杂的逻辑业务, 用C++代替JavaScript实现;


2) Clipping: 只有在必须的时候使用 Item.clip, 在painting的时候它会影响程序的效率;


3) Image

  a) 使用 Image.sourceSize 属性来将图片扩大以显示大图片, 这样可以省下大图片所占的空间; 

  b) 只有在必须的时候使用 Image.smooth. 

  c) 不要使用一大堆复杂的Element组合来画图, 提供一张IMAGE资源就可以简单有效地显示静态图像;


4) Anchors vs. Binding

使用anchors比起把x,y位置根据互相关系固定起来的方式要有效率, 而且在左右互换或实现镜像的时候更合适;


5) Opaque Items: 如果一个Item被一个不透明的item整个遮盖住了, 把这个item的opacity设为0;


6) View delegatescacheBuffer 设定一定的值(根据具体情况选择大小), 把View里面的Item缓存起来;


 

由系统环境决定:

-Use showFullScreen() 全屏显示

-Use a different graphics system 更换一个图形系统;


Refer to: http://doc.qt.digia.com/4.7/qdeclarativeperformance.html  & http://cdumez.blogspot.com/2010/12/ways-to-improve-qml-performance.html

posted @ 2013-07-04 13:03  罗伊y  阅读(374)  评论(0编辑  收藏  举报