muduo 與 boost asio 輸送量對比

來源:互聯網
上載者:User

muduo (http://code.google.com/p/muduo) 是一個基於 Reactor 模式的 C++ 網路程式庫,我在編寫它 的時候並沒有以高並發高吞吐為主要目標,但出乎我的意料,ping pong 測試表明,muduo 輸送量比 boost.asio 高 15% 以上。

測試對象

boost 1.40 中的 asio 1.4.3

asio 1.4.5 (http://think-async.com/Asio/Download)

muduo 0.1.1 (http://muduo.googlecode.com/files/muduo-0.1.1-alpha.tar.gz) SHA1 Checksum: a446ea8a22915f439063d2bc52eb2dc4b9caf92d

測試環境

硬體:DELL 490 工作站,雙路 Intel quad core Xeon E5320 CPU,16G 記憶體

作業系統: Ubuntu Linux Server 10.04.1 LTS x86_64

編譯器:g++ 4.4.3

測試方法

依據 asio 效能測試 http://think-async.com/Asio/LinuxPerformanceImprovements 的辦法,用 ping pong 協議來測試輸送量。

簡單地說,ping pong 協議是用戶端和伺服器都實現 echo 協議。當 TCP 串連建立時,用戶端向服 務器發送一些資料,伺服器會 echo 回這些資料,然後用戶端再 echo 回伺服器。這些資料就會像乒乓 球一樣在用戶端和伺服器之間來回傳送,直到有一方中斷連線為止。這是用來測試輸送量的常用辦法。

asio 的測試代碼取自 http://asio.cvs.sourceforge.net/viewvc/asio/asio/src/tests/performance/ ,未作更改。

muduo 的測試代碼在 0.1.1 軟體包內,路徑為 examples/pingpong/,代碼如 http://gist.github.com/564985 所示。

muduo 和 asio 的最佳化編譯參數均為 -O2 -finline-limit=1000

$ BUILD_TYPE=release ./build.sh  # 編譯 muduo 的最佳化版本

我主要做了兩項測試:

單線程測試,測試並發串連數為 1/10/100/1000/10000 時的輸送量。

多線程測試,並發串連數為 100 或 1000,伺服器和用戶端的線程數同時設為 1/2/3/4。(由於我 家裡只有一台 8 核機器,而且伺服器和用戶端運行在同一台機器上,線程數大於 4 沒有意義。)

所有測試中,ping pong 訊息的大小均為 16k bytes。測試用的 shell 指令碼可從 http://gist.github.com/564985 下載。

測試結果

單線程測試的結果,數字越大越好:

相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

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

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