设为首页 加入收藏

TOP

6.5.1 muduo 与Boost.Asio、libevent2 的吞吐量对比(2)
2013-10-07 16:04:06 来源: 作者: 【 】 浏览:98
Tags:6.5.1 muduo Boost.Asio libevent2 吞吐量 对比

6.5.1 muduo 与Boost.Asio、libevent2 的吞吐量对比(2)

以上结果让人大跌眼镜,muduo 居然比libevent2 快70%!跟踪libevent2 的源代码发现,它每次最多从socket 读取4096 字节的数据(证据在buffer.c 的evbuffer_read() 函数),怪不得吞吐量比muduo 小很多。因为在这一测试中,muduo 每次读取16 384 字节,系统调用的性价比较高。

为了公平起见,我再测了一次,这回两个库都发送4096 字节的消息(见图6-4)。

 
图6-4

测试结果表明muduo 的吞吐量平均比libevent2 高18% 以上。

多线程测试的结果(见图6-5),数字越大越好。

 
(点击查看大图)图6-5

测试结果表明muduo 的吞吐量平均比asio 高15% 以上。

讨论

muduo 出乎意料地比asio 性能优越,我想主要得益于其简单的设计和简洁的代码。asio 在多线程测试中表现不佳,我猜测其主要原因是测试代码只使用了一个io_service,如果改用“io_service per CPU”的话,其性能应该有所提高。我对asio 的了解程度仅限于能读懂其代码,希望能有asio 高手编写“io_service perCPU”的ping pong 测试,以便与muduo 做一个公平的比较。

由于libevent2 每次最多从网络读取4096 字节,这大大限制了它的吞吐量。

ping pong 测试很容易实现,欢迎其他网络库(ACE、POCO、libevent 等)也能加入到对比中来,期待这些库的高手出马。

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇6.5.1 muduo 与Boost.Asio、libev.. 下一篇6.5.2 击鼓传花:对比muduo 与lib..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·用 C 语言或者限制使 (2025-12-25 08:50:05)
·C++构造shared_ptr为 (2025-12-25 08:50:01)
·既然引用计数在做 GC (2025-12-25 08:49:59)
·Java 编程和 c 语言 (2025-12-25 08:19:48)
·. net内存管理宝典这 (2025-12-25 08:19:46)