Posted on 2005-12-02 16:17
笨笨 阅读(3515)
评论(7) 编辑 收藏 所属分类:
Java
Java 与 C 性能比较的一些经验数据
太细的数据也拿不到,必须要针对具体平台和JVM
基本代码执行
Java与C在 1:3-1:5左右,在Intel平台上用JDK1.4测得。
JNI不快,一次基本JNI调用差不多等于一次Java方法调用(未考虑大数据量传输)
数据库访问
JDBC与数据库本地接口差距较大,差不多在1到2个数量级左右,或更多。可以认为在1:10 - 1:50之间
socket网络传输
Java要分普通多线程和NIO方式
多线程方式,并发受限,一般不会超过150-200个并发,再多性能不会增加。这种方式下,网络传输性能与C差距可以认为在1个数量级左右,即1:10-1:30。
NIO方式,并发不错,能够支持到几千个并发,性能差距小些,可以做到在1:3 -- 1:5 左右。
C 通过select/poll/epoll技术,并发10000没有多少问题,并且通过Zero-Copy技术,可以避开Java 所无法避免缓冲区复制(Java->C缓冲区复制)的问题。
总的来看,Java与C在普通多层Web应用方面,差距可以认为在1个数量级左右,关键应用如TP Monitor目前还无法使用Java。