首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> 關於C++

muduo 與 Boost.Asio 吞吐量效能對比測試

     編輯:關於C++

muduo 是基於 Reactor 模式的 C++ 網路庫,開發初衷非以高並發高吞吐為首要目標,但 ping-pong 測試驚人發現:muduo 吞吐量平均比 Boost.Asio 高 15% 以上。

測試環境與對象

  • 硬體: DELL 490 工作站,雙路 Intel Xeon E5320 (8 核心),16GB 記憶體
  • 系統: Ubuntu 10.04.1 LTS x86_64
  • 編譯器: g++ 4.4.3,優化參數 -O2 -finline-limit=1000
  • 測試對象: Boost.Asio 1.4.3/1.4.5、muduo 0.1.1

測試方法:Ping-Pong 協定

客戶端與伺服器雙向 Echo,資料像乒乓球在連接間來回傳送,測量吞吐量。訊息大小固定 16KB。測試腳本參考 Asio 官方效能測試。

測試項目

  1. 單執行緒測試: 並發連接數 1/10/100/1000/10000
  2. 多執行緒測試: 並發 100/1000,執行緒數 1/2/3/4(受限於 8 核心單機環境)

測試結果

單執行緒吞吐量(數值越大越好)

單執行緒測試結果圖表

多執行緒吞吐量(100 並發)

100並發多執行緒測試結果

多執行緒吞吐量(1000 並發)

1000並發多執行緒測試結果

結果分析與討論

  • muduo 勝出主因: 簡單的設計與精簡的程式碼
  • Asio 多執行緒表現不佳推測: 測試程式僅使用單一 io_service,若改用「每 CPU 一 io_service」架構效能應有提升
  • 局限性: 作者對 Asio 了解有限,歡迎 Asio 專家提供優化版測試以利公平比較

開放邀請

Ping-Pong 測試易於實作,歡迎 ACE、POCO、libevent 等其他網路庫加入對比,期待各庫專家參與。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved