圖形效能(widgets的渲染效能太低,所以推出了QML,走硬體加速)和網路效能(對UPD效能有實測資料支援)

來源:互聯網
上載者:User

標籤:

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個而且一個不丟,終於給力了。

圖形效能(widgets的渲染效能太低,所以推出了QML,走硬體加速)和網路效能(對UPD效能有實測資料支援)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.