- 1、本文档共7页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Libevent(单线程)C语言.doc
Libevent (单线程) C语言
200客户端
CPU 88.1%
Libevent 4+1线程(event loop per thread) C语言
200客户端
TPS如下图
CPU占用如下图
400客户端
1000客户端
EPOLL(多worker线程,多个线程共享1个epoll,snapshot) C语言
CPU 135.6%
400客户端
1000客户端
Mina2(JAVA)
200客户端
CPU 254.3%
400客户端
1000客户端
数据汇总:
由以上两图可以得出以下结论:
1. 从TPS(每秒处理的请求数据上来看),三者没有本质差异,基于JAVA语言的MINA2框架在TPS上绝对不输于C语言EPOLL和LIBEVENT。
2. EPOLL无论在TPS或者CPU占用率方面都占优势。这是预料之中,毕竟LIBEVENT也好,MINA2也好,在LINUX上面,最终使用也是EPOLL机制,所以只要不犯低级错误,原生的EPOLL在性能和CPU消耗方面必然会占优势。
3. LIBEVENT和MINA2都在EPOLL基础上做了大量的封装工作,比如LIBEVENT的buffer event,Mina2的codec,不可避免造成额外的CPU开销。其中基于java语言的mina2在CPU上开销明显大于C语言的其它方案。甚至有接近2倍的差异。
4. 我们在开发功能复杂的服务器应用之时,一些基本的工作必须要做,比如buffer,比如codec,这些工作我们自己做,或者交由libevent或者mina2来做,始终都要去做,是避免不了的,而且我们自己去实现,本身效率如何也未知。所以我们才会选择使用更上层的封闭,一方面减少工作量,另一方面,避免无关的错误发生。从这一点出发,在做技术选型之时,综合取舍,业务简单但对性能极端要求的场景,可以直接用C语言和EPOLL,业务复杂度高工程较大的需求,可以选用JAVA语言和MINA2。
文档评论(0)