JAVA和C++反应式框架性能测试
2011-12-26 17:57
267 查看
最近要弄一个高性能的日志采集系统,想顺便弄一个通用的基于网络的反应式框架出来。
框架基本思想
进程模型:一个接受线程,可配置个工作线程。
编程模型:一个管理单例,所有的handler实例跟它注册自己所关注的命令号。管理实例根据命令号进行分发。
消息协议:kv格式,格式是k1=v1&k2=v2&...&kn=vn。其中c是关键字,对应的value就是命令号。
框架开发
一如既往的偷懒即是稳定
C++框架是基于Memcached修改的。把try_read_command中嵌入自己的入口代码,和框架的业务部分对接起来。这样就可以实现支持C++的业务框架了,同时享受Memcached的基本功能,比如deamon化,线程配置,支持UDP等。把它编译成静态库文件,这样就可以轻易的和业务代码分离。
JAVA的框架是基于MINA进行开发的。MINA已经支持一个接受线程,可配置个工作线程的进程模型了,而且有TextLineDecoder,TextLineEncoder基于文本的编解码。增加很少的代码就可以实现我们的功能了。
性能测试结果
过程:弄一个echo的Handler处理类,对请求内容直接返回。
环境:虚拟机, 8G内存, 2G双虚拟CPU(32K缓存)
数据:
处理能力
整个过程中,JAVA的框架 0.7W/s以上,数值继续往上冲击就速度很慢了,大概原因是CPU已经撑不住了。
而C++框架都是迅速冲击上2W的。
目前框架的瓶颈在CPU上, 框架进程的CPU占用率都是100%的.
结论
同等CPU能力下,C++框架效率是JAVA的1.5倍以上。
框架基本思想
进程模型:一个接受线程,可配置个工作线程。
编程模型:一个管理单例,所有的handler实例跟它注册自己所关注的命令号。管理实例根据命令号进行分发。
消息协议:kv格式,格式是k1=v1&k2=v2&...&kn=vn。其中c是关键字,对应的value就是命令号。
框架开发
一如既往的偷懒即是稳定
C++框架是基于Memcached修改的。把try_read_command中嵌入自己的入口代码,和框架的业务部分对接起来。这样就可以实现支持C++的业务框架了,同时享受Memcached的基本功能,比如deamon化,线程配置,支持UDP等。把它编译成静态库文件,这样就可以轻易的和业务代码分离。
JAVA的框架是基于MINA进行开发的。MINA已经支持一个接受线程,可配置个工作线程的进程模型了,而且有TextLineDecoder,TextLineEncoder基于文本的编解码。增加很少的代码就可以实现我们的功能了。
性能测试结果
过程:弄一个echo的Handler处理类,对请求内容直接返回。
环境:虚拟机, 8G内存, 2G双虚拟CPU(32K缓存)
数据:
处理能力
C++ | JAVA | |
100个连接 | 3.6~5W /s | 2.4~2.5 W/s |
10个连接 | 3.1~4.8W/s | 2 W/S |
100个连接echo 1K数据性能 | 2.4 W/s | 1 W/s |
而C++框架都是迅速冲击上2W的。
目前框架的瓶颈在CPU上, 框架进程的CPU占用率都是100%的.
结论
同等CPU能力下,C++框架效率是JAVA的1.5倍以上。
相关文章推荐
- jmeter性能测试,基于scf框架的"java请求"接口封装、环境配置与测试
- 性能测试之字符串比较; C、C++和JAVA
- 性能测试 lua VS java VS nodejs VS c++
- Java RESTful框架的性能比较
- Java 性能测试 - 使用jdk自带的jvisualvm
- Java、PHP、Python与MySQL交互的性能测试
- 巅峰对决:Hypertable(C++)吞吐率测试完胜HBase(Java)
- 使用开源的Profiler来测试你的Java应用程序的性能
- Apworks框架中各种仓储实现的性能基准测试与结果对比
- Mockito:一个强大的用于Java开发的模拟测试框架
- 2017年的golang、python、php、c++、c、java、Nodejs性能对比(golang python php c++ java Nodejs Performance)
- Xvfb+YSlow+ShowSlow搭建前端性能测试框架
- JSF测试框架特性和性能检测
- Java tcp服务器框架 以及一个简单命令行聊天的测试例子
- IDEA搭建ssm框架测试衍生出的问题The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: D:\Develop\jdk7\jdk1.7.0_79\bin;
- java + selenium测试框架(之下载页面上的图片) 版本演化七
- RPC框架性能基本比较测试
- Java 8 的 JVM 有多快?Fork-Join 性能基准测试
- java测试框架Junit入门