首頁>Club>
9
回覆列表
  • 1 # 網路圈

    的確,不可否認,Java執行效率上比C/C++是要慢一些,但隨著JVM / JIT的不斷升級最佳化,這種速度上的差異會越來越小。

    那為什麼說Java比C/C++執行效率上要慢呢?且聽我說:

    1、Java是解釋型語言、C/C++是編譯型語言:

    C++可以理解為是C語言的升級擴充套件版本,C/C++的程式編譯出來的是機器碼,可以被CPU直接載入執行的;而Java編譯出來的是位元組碼,然後要透過JIT編譯器“翻譯”為機器碼,然後再被JVM載入執行。Java中間多了個翻譯過程。

    兩種語言的執行過程大概如下:

    Java:程式 》編譯 》位元組碼 》JVM 載入處理 》機器碼 》執行

    C/C++:程式 》 靜態編譯器 》 機器碼 》執行

    2、Java其實是執行在JVM(虛擬機器)上的:

    Java的跨平臺其實靠的就是與系統無關的位元組碼與JVM來實現的,JVM可以理解為是一個虛擬機器系統,Java程式是跑在JVM上面的(JVM底層是用C實現的)。所以Java的效能還受JVM的配置影響。

    而C/C++編譯的程式是不需要跑在虛擬機器上的。

    3、Java語言特性帶來的效能開銷:

    Java採用的是動態連結、C/C++採用的是靜態連結,所以兩者效能上差距是有的。

    另外JVM還會進行其它一些操作,如:位元組碼載入、型別檢測、GC垃圾回收、型別轉換等等,這些操作也是要耗時的。

    綜上,Java執行效率比C/C++要慢一點,是存在的,但隨著JVM及JIT的不斷最佳化,這種速度上的差異只會越來越小。另外,Java是犧牲了部分效能來換取“一次編寫、到處執行”的跨平臺實現,也是值得的。

  • 2 # 讓程式設計改變世界

    1.C++是編譯型語言,java是解釋型語言,普遍來講,編譯型語言要比解釋型語言速度快。

    2.C++是在C語言的基礎上增加了新的語法和麵向物件的機制,更加接近C語言,也就意味著更加接近底層硬體,越接近於硬體,執行速度越快。

    3.java是純面向物件的語言,實現了大量類的封裝,體系比較龐大,對於java程式設計師來說,底層硬體可以說是透明的,所以想要最佳化效率是不容易的。

    4.java慢於C++的一個重要原因就是java是執行在java虛擬機器上,虛擬機器的也需要時間開銷。

    5.總的來說,C++的效率大概是java的3到4倍,但是現在CPU的速度已經很快了,這種幾倍的效率問題CPU已經可以完全遮蔽了。

  • 中秋節和大豐收的關聯?
  • 都說教師缺編嚴重,教師待遇提高了,排著隊想考進來的人那麼多,為什麼男教師更少了?