的確,不可否認,
那為什么說Java比C/C++運行效率上要慢呢?且聽我說:
1、Java是解釋型語言、C/C++是編譯型語言:
C++可以理解為是C語言的升級擴展版本,C/C++的程序編譯出來的是
兩種語言的執(zhí)行過程大概如下:
Java:
程序》編譯》字節(jié)碼》JVM加載處理》機器碼》執(zhí)行C/C++:
程序》靜態(tài)編譯器》機器碼》執(zhí)行
2、Java其實是運行在JVM(虛擬機)上的:
Java的跨平臺其實靠的就是與系統(tǒng)無關的字節(jié)碼與JVM來實現(xiàn)的,JVM可以理解為是一個虛擬機系統(tǒng),Java程序是跑在JVM上面的(JVM底層是用C實現(xiàn)的)。
而C/C++編譯的程序是不需要跑在虛擬機上的。
3、Java語言特性帶來的性能開銷:
Java采用的是動態(tài)鏈接、C/C++采用的是靜態(tài)鏈接,所以兩者性能上差距是有的。
另外JVM還會進行其它一些操作,如:字節(jié)碼加載、類型檢測、GC垃圾回收、類型轉(zhuǎn)換等等,這些操作也是要耗時的。
綜上,Java運行效率比C/C++要慢一點,是存在的,但隨著JVM及JIT的不斷優(yōu)化,這種速度上的差異只會越來越小。另外,