muduo 與 libevent2 吞吐量對比

2021-09-30 06:07:27 字數 787 閱讀 6041

libevent 是一款非常好用的 c 語言網路庫,它也採用 reactor 模型,正好可以與 muduo 做一對比。

本文用 ping pong 測試來對比 muduo 和 libevent2 的吞吐量,測試結果表明 muduo 吞吐量平均比 libevent2 高 18% 以上,個別情況達到 70%。

測試環境與前文《muduo 與 boost asio 吞吐量對比》相同。

我自己編寫了 libevent2 的 ping pong 測試**,位址在 。由於這個測試**沒有使用多執行緒,所以本次測試只對比單執行緒下的效能。

測試內容為:客戶端與伺服器執行在同一臺機器,均為單執行緒,測試併發連線數為 1/10/100/1000/10000 時的吞吐量。

在同一臺機器測試吞吐量的原因:

單執行緒吞吐量測試,數字越大越好:

以上結果讓人大跌眼鏡,muduo 居然比 libevent 快 70%!跟蹤 libevent2 的源**發現,它每次最多從 socket 讀取 4096 位元組的資料 (證據在 buffer.c 的 evbuffer_read() 函式),怪不得吞吐量比 muduo 小很多。因為在這一測試中,muduo 每次讀取 16384 位元組,系統呼叫的價效比較高。

buffer.c:#define evbuffer_max_read      4096

為了公平起見,我再測了一次,這回兩個庫都傳送 4096 位元組的訊息。

測試結果表明 muduo 吞吐量平均比 libevent2 高 18% 以上。

由於 libevent2 每次最多從網路讀取 4096 位元組,大大限制了它的吞吐量。

muduo 與 libevent2 吞吐量對照

libevent 是一款很好用的 c 語言網路庫,它也採用 reactor 模型,正好能夠與 muduo 做一對照。本文用 ping pong 測試來對照 muduo 和 libevent2 的吞吐量,測試結果表明 muduo 吞吐量平均比 libevent2 高 18 以上,個別情況達到 70 測...

libevent 2 超時機制分析

先上一段libevent提供的 int lasttime static void timeout cb int fd,short event,void arg intmain int argc,char argv 跟蹤發現新增超時事件流程為 evtimer set event add event q...

LIBEVENT應用舉例2

include include include include include include include include define port 25341 define backlog 5 define mem size 1024 struct event base base struct ...