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

muduo 與 libevent2 吞吐量對比:Reactor 模式網路庫效能實測

     編輯:關於C++

libevent 同樣採用 Reactor 模型,是極優秀的 C 語言網路庫。本文以 ping-pong 測試對比 muduo 與 libevent2 吞吐量,結果顯示 muduo 平均比 libevent2 高 18% 以上,個別情況達 70%。

測試環境與對象

  • libevent 2.0.6-rc
  • muduo 0.1.1
  • 環境同前文(Ubuntu 10.04,DELL 490,8 核心)

自行撰寫 libevent2 ping-pong 測試程式(單執行緒),測試並發 1/10/100/1000/10000 吞吐量。

同機測試理由

現代 CPU 單執行緒即可跑滿千兆網卡。同機測試消除網路頻寬瓶頸,純粹比較庫在相同 CPU 資源下的處理效率。

測試結果與關鍵發現

16KB 訊息測試

16KB訊息測試結果

驚人結果:muduo 快 70%! 追蹤原始碼發現:

buffer.c:#define EVBUFFER_MAX_READ  4096

libevent2 每次最多讀 4096 位元組,而 muduo 讀 16384 位元組,系統呼叫效能差異巨大。

4KB 訊息測試(公平對比)

4KB訊息測試結果

雙方同為 4KB 訊息時,muduo 平均仍快 18% 以上。

結論

libevent2 固定 4KB 讀取上限嚴重限制吞吐量。muduo 無此限制,系統呼叫摻雜比更優,在高吞吐場景具明顯優勢。

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