卓航论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 176|回复: 3
打印 上一主题 下一主题

muduo 与 boost asio 吞吐量对比

[复制链接]
[至尊红钻5级]发帖数量≥8000篇 [未点亮至尊黄钻]威望不足10点 [未点亮至尊蓝钻]在线时间不足10小时 [未点亮至尊绿钻]贡献度不足10点 [至尊紫钻4级]金币≥20000个 [未点亮至尊粉钻]精华贴数不足10贴 [未点亮至尊黑钻]活跃不足8个
 等级: 
 级别: 论坛元老
 UID:  7   [未点亮普号显示]钻石不足3个
 阁 分: 36567
 阁 望: 0
 阁 献: 0
 活 跃: 0
 发 贴: 12405 (0)
 阁 币: 24162  
性 别: I'm 火星人!
阅读权限: 90
在线时长: 0 小时
注册时间: 2016-10-16
最后登录: 2016-10-18
go
楼主
发表于 2016-10-17 16:22:38 |只看该作者 |倒序浏览
本帖发表于 2016-10-17 16:22:38...阅读 177 人...加油,亲爱的楼主:[db:作者]
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 下载。
测试结果
单线程测试的结果,数字越大越好:

               
多线程测试的结果,数字越大越好:


测试结果表明 muduo 吞吐量平均比 asio 高 15% 以上。
讨论
muduo 出乎意料地比 asio 性能优越,我想主要得益于其简单的设计和简洁的代码。
asio 在多线程测试中表现不佳,我猜测其主要原因是测试代码只使用了一个 io_service,如果改用 “io_service per CPU”的话,性能应该有所提高。我对 asio 的了解程度仅限于能读懂其代码,希望 能有 asio 高手编写“io_service per CPU”的 ping pong 测试,以便与 muduo 做一个公平的比较。
ping pong 测试很容易实现,欢迎其他网络库(ACE、POCO、libevent 等)也能加入到对比中 来,期待这些库的高手出马。
查看本栏目更多精彩内容:http://www.bianceng.cn/Programming/cplus/
分享到: QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏0 支持支持0 反对反对0

使用道具 举报

[至尊红钻3级]发帖数量≥1000篇 [未点亮至尊黄钻]威望不足10点 [未点亮至尊蓝钻]在线时间不足10小时 [未点亮至尊绿钻]贡献度不足10点 [未点亮至尊紫钻]金币不足100个 [未点亮至尊粉钻]精华贴数不足10贴 [未点亮至尊黑钻]活跃不足8个
 等级: 
 级别: 金牌会员
 UID:  2   [未点亮普号显示]钻石不足3个
 阁 分: 1290
 阁 望: 0
 阁 献: 0
 活 跃: 0
 发 贴: 1285 (0)
 阁 币: 5  
性 别: I'm 火星人!
阅读权限: 70
在线时长: 0 小时
注册时间: 2016-10-14
最后登录: 2016-10-18
沙发
发表于 2016-10-17 17:24:50 |只看该作者
本回复帖发表于 2016-10-17 17:24:50,感谢hjghjgj对本帖的认真回复,你的回复是对楼主莫大的鼓舞
谢谢楼主,共同发展

使用道具 举报

[至尊红钻2级]发帖数量≥100篇 [至尊黄钻1级]威望≥10点 [未点亮至尊蓝钻]在线时间不足10小时 [未点亮至尊绿钻]贡献度不足10点 [未点亮至尊紫钻]金币不足100个 [未点亮至尊粉钻]精华贴数不足10贴 [未点亮至尊黑钻]活跃不足8个
 等级: 
 级别: 注册会员
 UID:  21   [未点亮普号显示]钻石不足3个
 阁 分: 159
 阁 望: 10
 阁 献: 9
 活 跃: 0
 发 贴: 125 (0)
 阁 币: 5  
性 别: I'm 火星人!
阅读权限: 20
在线时长: 5 小时
注册时间: 2011-1-6
最后登录: 2016-10-21
板凳
发表于 2016-10-19 10:50:05 |只看该作者
本回复帖发表于 2016-10-19 10:50:05,感谢hacksee对本帖的认真回复,你的回复是对楼主莫大的鼓舞
帮帮顶顶!!

使用道具 举报

[至尊红钻2级]发帖数量≥100篇 [未点亮至尊黄钻]威望不足10点 [未点亮至尊蓝钻]在线时间不足10小时 [未点亮至尊绿钻]贡献度不足10点 [未点亮至尊紫钻]金币不足100个 [未点亮至尊粉钻]精华贴数不足10贴 [未点亮至尊黑钻]活跃不足8个
 等级: 
 级别: 中级会员
 UID:  19   [未点亮普号显示]钻石不足3个
 阁 分: 267
 阁 望: 9
 阁 献: 5
 活 跃: 0
 发 贴: 240 (0)
 阁 币: 4  
性 别: I'm 火星人!
阅读权限: 30
在线时长: 3 小时
注册时间: 2011-1-6
最后登录: 2016-10-21
地板
发表于 2016-10-21 00:38:34 |只看该作者
本回复帖发表于 2016-10-21 00:38:34,感谢a58523对本帖的认真回复,你的回复是对楼主莫大的鼓舞
真是 收益 匪浅

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

1、请认真发帖,禁止回复纯表情,纯数字等无意义的内容!帖子内容不要太简单!
2、提倡文明上网,净化网络环境!抵制低俗不良违法有害信息。
3、每个贴内连续回复请勿多余3贴,每个版面回复请勿多余10贴!
4、如果你对主帖作者的帖子不屑一顾的话,请勿回帖。谢谢合作!

手机版| 百度搜索:vkee.pw

2012-2015 卓航旗下 GMT+8, 2024-6-2 10:06 , Processed in 3.469188 second(s), 30 queries . Powered by Discuz! X3.2  

禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.如遇版权问题,请及时联系站长(QQ:5213513)

今天是: | 本站已经安全运行: //这个地方可以改颜色

快速回复 返回顶部 返回列表