图形性能和网络性能(对UPD性能有实测数据支持)
2017-06-06 23:28
337 查看
作者: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个而且一个不丢,终于给力了。
链接: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个而且一个不丢,终于给力了。
相关文章推荐
- 图形性能(widgets的渲染性能太低,所以推出了QML,走硬件加速)和网络性能(对UPD性能有实测数据支持)
- 【Java/Android性能优 4】PreloadDataCache支持预取的数据缓存,使用简单,支持多种缓存算法,支持不同网络类型,扩展性强
- 【Java/Android性能优 4】PreloadDataCache支持预取的数据缓存,使用简单,支持多种缓存算法,支持不同网络类型,扩展性强
- 网络游戏之性能测试规划(二)——如何建立有效的基准数据及环境(拟稿)
- PreloadDataCache支持预取的数据缓存,使用简单,支持多种缓存算法,支持不同网络类型,扩展性强
- 开源流媒体服务器EasyDarwin支持epoll网络模型,大大提升流媒体服务器网络并发性能
- 开源流媒体服务器EasyDarwin支持epoll网络模型,大大提升流媒体服务器网络并发性能
- 网络性能检测常用数据
- 高性能数据序列化库,可序列化为binary,也可序列化为json,支持C++ java python php objectc 语言,兼容json数据格试,可以互相转换,跨语言交换数据,网络传输,远程调
- 【Java/Android性能优 6】Android 图片SD卡缓存 使用简单 支持预取 支持多种缓存算法 支持不同网络类型 支持序列化
- 【Java/Android性能优5】 Android ImageCache图片缓存,使用简单,支持预取,支持多种缓存算法,支持不同网络类型,扩展性强
- Spark性能优化第二季-Task、数据倾斜及网络性能优化
- 网络爬虫中高效率的URL索引 更新支持千万条数据
- 大数据应用之HBase数据插入性能优化实测教程
- WebService - 怎样提高WebService性能 大数据量网络传输处理
- Qt 框架的图形性能高(OpenGL上的系统效率高),网络性能低,开发效率高,Quick是可以走硬件加速——Qt中分为好几套图形系统,差不多代表了2D描画的发展史。最经典的软描画系统
- EverNote 极致的免费笔记资料管理软件 (数据网络同步、支持PC、Mac与手机多平台) 转自:http://www.iplaysoft.com/evernote.html
- 教你50招提升ASP.NET性能(十):减少通过网络发送的数据
- 通过压缩数据提高Domino网络传输性能
- 【Java/Android性能优 6】Android 图片SD卡缓存 使用简单 支持预取 支持多种缓存算法 支持不同网络类型 支持序列化