Coroutine协程库:网络性能完爆Asio异步模型 | 知行一

Coroutine协程库:网络性能完爆Asio异步模型

我在社区的github组织中贡献了一个协程库:https://github.com/topcpporg/cpp_features

近日有用户找到我,想要了解一下coroutine库在网络方面的性能,于是选取已入选标准库的boost.asio网络库的异步模型做横向对比,结果完爆asio异步模型,coroutine库网络性能是asio异步模型的2-14倍。

简要介绍一下测试流程:

1.TCP协议,C/S是同一台物理机的两个进程,建立1000条连接

2.服务的是echo服务器,收到数据原样发回,客户端无限次发送指定大小的数据包,测试取样包大小为:4字节、32字节、128字节、1024字节、4096字节

3.分不同线程数测试,测试取样线程数为:单线程,2线程,4线程,8线程

4.用于对比测试的两组程序分别为:

A)用Coroutine搭配asio同步模型(纯属偷懒,从系统调用写起会更快)编写

B) 用boost.asio异步模型编写

5.测试环境是一台拥有2颗6核12线程CPU的物理机,共24个逻辑线程,Linux系统版本为:CentOS 6.2

好了,话不多说,直接上测试结果图.

两份测试代码分别在github仓库中的:coroutine/unit_test/benchmark和coroutine/unit_test/benchmark/asio目录下.

 

《Coroutine协程库:网络性能完爆Asio异步模型》有6个想法

    1. 1.asio的coroutine会被网络IO阻塞,虽然使用者可以使用异步网络io,但是第三方库并不会,因此现有的使用同步网络IO的第三方库统统不能用
      2.asio的coroutine只是简单的网络层面的协程,缺失很多feature,比如channel mutex等,仅仅是个协程模型的网络库. 这个corotuine却是一个完整的协程模型的框架,特性完整.

发表评论