Posted on 2005-12-02 16:17
笨笨 閱讀(3534)
評論(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。