Qt 4.5 新功能逐一看 - 性能优化 (一)

大家对于Qt诟病比较多的地方就是性能,尤其在嵌入式或者比较低端的平台上。所以在Qt4.5中,第一条设计理念就是提升Qt的运行时性能,内部项目代号称之为Falcon - 猎鹰,目的就是想让Qt飞起来。:-)

其实性能优化在Qt4.5中,算是最最重要,最核心的改进了。为什么放在最后再说,是因为其中所包含的改进是在是太多了,也非常具体,很难简单的概括。但是,从另一方面来说,对于Qt应用程序的开发者,除非有兴趣潜心研究,着实不需要关心具体的实现细节,原有的Qt应用,只需要运行在新的4.5之上,你就可以感觉到性能的提升,而不用修改原有程序代码。

深入一些,那么究竟有哪些改进以及性能方面的提升?主要分三部分来说,分别是Qt本身绘图引擎的优化,“热插拔”图形系统以及性能Benchmark工具。

先来看看Qt本身绘图引擎的优化:

简而言之,在Qt4.5之前的版本中,Qt的Paint Engine在QPainter的操作过程中,有一些冗余的地方。在4.5中,这些细微,但是会影响全局性能的函数都被重新仔细分析和优化了,诸如:QPainter::begin() / end(),save() / restore(), drawTextItem(),drawPixmap()。总体来说,对于一个实际的Widget控件绘图,提升将近50%的效率。下面这张图是一些 Widget在4.4和4.5的benchmark。

Overall performance

Developer Blog here

除了QPaint的改进之外,4.5的Backingstore中也有不少改进,包括去除了许多不必要的QRegion的操作,以及是更加智能的Update操作。

下面的表格展示了含有透明以及不透明控件的Backingstore的不同Update操作性能比较。

OperationQt 4.4Qt 4.5Boost
Full update (transparent widgets)4330 ms2446 ms1.8x
Full update (opaque widgets)3352 ms1464 ms2.3x
Scroll (opaque widgets)50231 ms3746 ms13.4x
Partial update (opaque widgets)4246 ms1567 ms2.7x
Complex update (opaque widgets)4966 ms2265 ms2.2x
Full update (opaque children)3376 ms1464 ms2.3x
Move (opaque widgets)50293 ms4188 ms12.0x
Mass update (opaque widgets)9560 ms1679 ms5.7x

Developer Blog here

另外有比较大改进的地方还有Graphic View。在Graphic Item绘图之前,加入了很多对于exposed areas, StyleOption, intersecting shapes, clips的预判断,这样在真正绘图的时候,速度就会得到提升。最直观的例子就是,在Qt4.4中的4000芯片例子,在Windows平台上平均可以获得30%的提升,而在Linux上,使用Qt内置的Raster引擎和Graphic View,相比于原有的X11,则可以得到5到100倍的性能提升。

chip-demo

Developer Blog here

还有一些其他细微的改进,以及非图形方面的改进,诸如在X11平台上的绘图引擎中使用 <!--[if !ppt]--> <!--[endif]-->XSHM (MIT-SHM)来提升绘图效率,以及通过QIODevice类的优化,提升了File IO的性能,继而提高了FileDialog中对象的加载速度等等。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值