muduo 与 libevent2 吞吐量对比
当前位置:以往代写 > C/C++ 教程 >muduo 与 libevent2 吞吐量对比
2019-06-13

muduo 与 libevent2 吞吐量对比

muduo 与 libevent2 吞吐量对比

副标题#e#

libevent 是一款很是好用的 C 语言网络库,它也回收 Reactor 模子,正好可以与 muduo 做一对 比。

本文用 ping pong 测试来比拟 muduo 和 libevent2 的吞吐量,测试功效表白 muduo 吞吐量 平均比 libevent2 高 18% 以上,个体环境到达 70%。

测试工具

libevent 2.0.6-rc (http://monkey.org/~provos/libevent-2.0.6-rc.tar.gz)

muduo 0.1.1 (http://muduo.googlecode.com/files/muduo-0.1.1-alpha.tar.gz) SHA1 Checksum: a446ea8a22915f439063d2bc52eb2dc4b9caf92d

测试情况与测试要领

测试情况与前文《muduo 与 boost asio 吞吐量比拟》沟通。

我本身编写了 libevent2 的 ping pong 测试代码,地点在 http://github.com/chenshuo/recipes/tree/master/pingpong/libevent/ 。由于这个测试代码没有使 用多线程,所以本次测试只比拟单线程下的机能。

测试内容为:客户端与处事器运行在同一台 呆板,均为单线程,测试并发毗连数为 1/10/100/1000/10000 时的吞吐量。

在同一台呆板测试 吞吐量的原因:

此刻的 CPU 很快,即即是单线程单 TCP 毗连也能把 Gigabit 以太网的带宽跑满。假如用两台呆板 ,所有的吞吐量测试功效都将是 100 MiB/s,失去了比拟的意义。(或者可以比拟哪个库占的 CPU 少 。)

在同一台呆板上测试,可以在 CPU 资源沟通的环境下,纯真比拟网络库的效率。也就是说单线程下 ,处事端和客户端各占满 1 个 CPU,较量哪个库的吞吐量高。

测试功效

单线程吞吐量测试,数字越大越好:

muduo 与 libevent2 吞吐量比拟

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

buffer.c:#define EVBUFFER_MAX_READ      4096


#p#副标题#e#

为了公正起见,我 再测了一次,这回两个库都发送 4096 字节的动静。

muduo 与 libevent2 吞吐量比拟

测试功效表白 muduo 吞吐量平均比 libevent2 高 18% 以上。

接头

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

查察本栏目

    关键字:

在线提交作业