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