Posted on 2005-12-02 16:17
笨笨 閱讀(3535)
評論(7) 編輯 收藏 所屬分類:
Java
Java 與 C 性能比較的一些經(jīng)驗(yàn)數(shù)據(jù)
太細(xì)的數(shù)據(jù)也拿不到,必須要針對具體平臺(tái)和JVM
基本代碼執(zhí)行
Java與C在 1:3-1:5左右,在Intel平臺(tái)上用JDK1.4測得。
JNI不快,一次基本JNI調(diào)用差不多等于一次Java方法調(diào)用(未考慮大數(shù)據(jù)量傳輸)
數(shù)據(jù)庫訪問
JDBC與數(shù)據(jù)庫本地接口差距較大,差不多在1到2個(gè)數(shù)量級左右,或更多。可以認(rèn)為在1:10 - 1:50之間
socket網(wǎng)絡(luò)傳輸
Java要分普通多線程和NIO方式
多線程方式,并發(fā)受限,一般不會(huì)超過150-200個(gè)并發(fā),再多性能不會(huì)增加。這種方式下,網(wǎng)絡(luò)傳輸性能與C差距可以認(rèn)為在1個(gè)數(shù)量級左右,即1:10-1:30。
NIO方式,并發(fā)不錯(cuò),能夠支持到幾千個(gè)并發(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)用方面,差距可以認(rèn)為在1個(gè)數(shù)量級左右,關(guān)鍵應(yīng)用如TP Monitor目前還無法使用Java。