Java 與 C 性能比較的一些經(jīng)驗數(shù)據(jù)
太細的數(shù)據(jù)也拿不到,必須要針對具體平臺和JVM
基本代碼執(zhí)行
Java與C在 1:3-1:5左右,在Intel平臺上用JDK1.4測得。
JNI不快,一次基本JNI調(diào)用差不多等于一次Java方法調(diào)用(未考慮大數(shù)據(jù)量傳輸)
數(shù)據(jù)庫訪問
JDBC與數(shù)據(jù)庫本地接口差距較大,差不多在1到2個數(shù)量級左右,或更多。可以認為在1:10 - 1:50之間
socket網(wǎng)絡(luò)傳輸
Java要分普通多線程和NIO方式
多線程方式,并發(fā)受限,一般不會超過150-200個并發(fā),再多性能不會增加。這種方式下,網(wǎng)絡(luò)傳輸性能與C差距可以認為在1個數(shù)量級左右,即1:10-1:30。
NIO方式,并發(fā)不錯,能夠支持到幾千個并發(fā),性能差距小些,可以做到在1:3 -- 1:5 左右。
C 通過select/poll/epoll技術(shù),并發(fā)10000沒有多少問題,并且通過Zero-Copy技術(shù),可以避開Java 所無法避免緩沖區(qū)復(fù)制(Java->C緩沖區(qū)復(fù)制)的問題。
總的來看,Java與C在普通多層Web應(yīng)用方面,差距可以認為在1個數(shù)量級左右,關(guān)鍵應(yīng)用如TP Monitor目前還無法使用Java。