Qt 4.5 新功能逐一看 – 性能优化
来源:互联网 发布:centos arm linux gcc 编辑:程序博客网 时间:2024/05/13 19:26
大家对于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。
Developer Blog here
除了QPaint的改进之外,4.5的Backingstore中也有不少改进,包括去除了许多不必要的QRegion的操作,以及是更加智能的Update操作。
下面的表格展示了含有透明以及不透明控件的Backingstore的不同Update操作性能比较。
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倍的性能提升。
Developer Blog here
还有一些其他细微的改进,以及非图形方面的改进,诸如在X11平台上的绘图引擎中使用XSHM (MIT-SHM)来提升绘图效率,以及通过QIODevice类的优化,提升了File IO的性能,继而提高了FileDialog中对象的加载速度等等。
- Qt 4.5 新功能逐一看 – 性能优化
- Qt 4.5 新功能逐一看 - 性能优化 (一)
- Qt 4.5 新功能逐一看 - 性能优化 (二)
- 来看看.NET 4.5的新功能
- Qt Embedded性能优化详解
- mysq性能优化,摘下来慢慢看
- 前端性能优化-seo必看
- QT-Embedded程序性能优化方法
- SARscape5.0新功能抢先看
- 从XenDesktop7的新功能看citrix的新策略--安全高性能的移动桌面和应用交付
- 以前看flex 性能优化一文后记录
- 从LiveJournal后台发展看大规模网站性能优化方法
- 从LiveJournal后台发展看大规模网站性能优化方法
- 从LiveJournal后台发展看大规模网站性能优化方法
- 从LiveJournal后台发展看大规模网站性能优化方法
- 从LiveJournal后台发展看大规模网站性能优化方法
- 从LiveJournal后台发展看大规模网站性能优化方法
- 从LiveJournal后台发展看大规模网站性能优化方法
- 单例模式(Singleton)
- unsaved-value的经典解释
- .bat启动数据库服务(MSSQL,Oracle)
- Win7下VS2008编译报错:LINK : fatal error LNK1000: Internal error during IncrBuildImage 的解决方法
- 谷歌中国高管已流失3人 黑板报发招聘启示
- Qt 4.5 新功能逐一看 – 性能优化
- Package glib-2.0 was not found
- 企业应用架构模式
- Code Project:创建一个Qt RSS阅读器
- Community(关于架构的文档)谁能帮忙翻译一下
- Code Project:创建一个媒体播放器
- SubSonic基本操作
- 项目中的错误:成员初始化列表
- VB不使用 API,将 Utf8 转换为 Unicode