作者:JasonWong
链接:http://www.zhihu.com/question/37444226/answer/72007923
来源:知乎
著作权归作者所有,转载请联系作者获得授权。

~~~~~图形性能部分~~~~~
Qt的widgets部分,运行时的图像渲染性能是一般的,因为大部分的界面内容都是Qt自绘,没有走硬件加速,也就是说很多图形内容都是CPU算出来的。
但是widgets底层毕竟是C++,而且Qt的模块写的也不错,做过很多优化,这个渲染的性能在桌面上与有硬件加速的框架比差别不大,除非是有很多动画的复杂场景才能看出区别。
不过在手机上或者嵌入式上,就会明显觉得widgets的渲染性能低了。

那么怎么办呢,Qt是不会抱死在widgets一个框架上的。所以Qt推出了Quick和QML。
Quick是可以走硬件加速,各个平台都可以,而且支持OpenGL或OpenES。图形渲染性能非常强悍。
而且框架本身是类js的开发语言QML,开发效率也非常高。
目前Qt正在开发Controls2.x,这是Quick中主要的控件库,比现在的1.x性能又是成倍的提升。

有些人说Quick加载慢,我想说,把QML文件(包括Controls这些库级别的)直接编译进qrc文件,然后开QML编译器,加载速度66的。

~~~~~网络性能部分~~~~~
先说TCP部分的服务器,就是QTcpServer
这个模块性能是不强悍的,甚至连中等性能水平都到达不了(C++)。
这主要体现在两部分,第一是并发很低,这和Qt用的事件循环底层有关,超过800长链接就不稳定,超1000基本没法正常使用。第二是数据传输性能低,大约传输相等的数据量,比ASIO要多至少一倍CPU占用。
但是毕竟是C++,性能相比其他语言还是可以的,开发小规模的服务器,是没问题的。

再说说UDP服务器,就是QUdpSocket
前段时间做一个项目,要求用UDP接收大量数据,是每包1400字节数据,每秒4w包,大约相当于500M的带宽。
然后我先是用Qt做开发,然后各种丢包,最后简化到单独线程死循环接收,接收后甚至不做任何处理直接回去接收下一个包。这样,也只能每秒收7000个左右。
额,这丢了80%多,亲,不给力啊。
然后换了ASIO,也只能接到1.3w个,亲,还是不给力啊。
后来换了WinPcap,轻松拿下4w个而且一个不丢,终于给力了。

最新文章

  1. angularjs provider 供应商服务
  2. doxygen的使用(二)给代码添加javadoc风格的注释
  3. iOS开发MAC下配置Svn和Git
  4. memcpy code
  5. 了解 JavaScript (5)– 翻转器(rollover)
  6. "ORA-12154: TNS:could not resolve the connect identifier specified"的解决办法
  7. UVa 11971 Polygon (数学,转化)
  8. Linux 根文件系统制作
  9. [转] C++ Redistributable Package版本详解
  10. 牵扯较多属性和方法的类题目,很简单的题目本来不想发的,如果有同学学到这个题目感觉太长不愿敲代码,copy走我的即可~不过还是建议自己打一打
  11. Java多线程初学者指南(8):从线程返回数据的两种方法
  12. 经典算法面试题目-翻转一个C风格的字符串(1.2)
  13. Javascript数据类型——number类型
  14. C++ 常用容器or数据结构
  15. phpcms自定义分页
  16. LeetCode #3. Longest Substring Without Repeating Characters C#
  17. CocoaPods 安装使用教程
  18. Web云笔记--CSS
  19. 【Linux】在Win10上搭建WSL(适用于Linux的Windows子系统)
  20. Oracle的RowId和Rownum

热门文章

  1. hdu 1116 Play on Words
  2. HDU 2457 DNA repair (AC自动机+DP)
  3. HDU 4009 Transfer water
  4. PowerShell官方的MSDN
  5. error C2143 & error C4430
  6. 工具:BT Sync 同步文件
  7. VS快捷编码方式
  8. Lua 基本语法
  9. UITextField输入长度限制
  10. iOS更新之DFU模式和恢复模式