在什么情況下Java比C++快?
回復(fù)者:Cameron Purdy,Oracle中間件高級工程師。
這是根據(jù)我同時使用C++和Java工作超過20年所學(xué)到的,其實使用Java比C++還要早幾年:
1、根據(jù)我的經(jīng)驗,當(dāng)你把優(yōu)化過的C++代碼轉(zhuǎn)換成Java代碼,代碼的速度會慢大約三倍。
2、根據(jù)我的經(jīng)驗,把Java代碼轉(zhuǎn)換成C++的代碼,速度同樣也會慢三倍。首先,這種比較根本沒有意義,除非你能意識到用Java的方式去寫Java代碼,而不是像C++開發(fā)者那樣去組織C++代碼。
3、對于并發(fā)的數(shù)據(jù)結(jié)構(gòu)使用Java往往更有效率。當(dāng)數(shù)據(jù)結(jié)構(gòu)不是并發(fā)使用時,JVM會消除內(nèi)存屏障和同步,并傾向使用基于運行時性能分析的并發(fā)管理。
4、Java的動態(tài)內(nèi)存管理往往更有效率,在過度使用動態(tài)內(nèi)存管理和多線程的系統(tǒng)中效果尤其明顯。
5、Java內(nèi)聯(lián)代碼往往表現(xiàn)更加優(yōu)秀,除非你基于分析器對C++代碼進(jìn)行了大量優(yōu)化(或者確切地知道如何使用內(nèi)聯(lián)讓C++更加高效……你肯定會愛上這些頭文件?。?。
6、使用Java的大型項目往往更容易優(yōu)化,因為JVM為開發(fā)人員做了許多“全局”優(yōu)化(比如內(nèi)聯(lián)動態(tài)加載的代碼能力)。
一家之言,至少我的感覺是這樣……