淺談C++/JAVA/C#運行機制和執行效率


        貌似有段時間沒寫日志了,卻忽然有個念頭,想寫寫有關專業方面的東西。
        估計有很多同學都對C++/JAVA/C#這三大熱門語言的運行機制和執行效率有或多或少的困惑,自己也有,但是經過前期的學習,了解了三者在這兩方面的區別,就廢話不說了,進入主題吧。
        一、運行機制
       1、JAVA-編譯和解釋型語言   
       一個JAVA文件,首先會由JAVA編譯器(JAVAC)編譯成class(字節碼文件)文件,然后由Java虛擬機(JVM)去解釋。不同的操作系統只要裝有適合不同平台的JDK,JAVA文件都可以被解釋運行。JAVA是一種編譯和解釋型語言。
       字節碼文件(class)之所以能夠被JAVA虛擬機(JVM)所解釋,最主要的原因就是字節碼文件(class)里面所包含的內容是可以被JAVA虛擬機(JVM)所解釋的一種高度優化指令。
       而JAVA文件只需要編譯一次就可以在不同的操作系統上解釋運行,也就是說一次編譯處處運行,這就是JAVA可以跨平台的原因。
 
       2、C++-編譯型語言
       C++沒有虛擬機這種概念,也就是說C++一旦編譯就可以運行,是一種編譯型語言,速度上比JAVA快得多,C++編譯完成后是機器碼(二進制文件)可以直接在操作系統上運行。
 
       3、C#-編譯再編譯型語言
       C#與一樣,同樣有虛擬機,但是他的虛擬機是CLR(公共語言運行時)。一個C#文件,首先會由C#編譯器編譯成低級別的中間語言IL,然后由C#虛擬機也就是公共語言運行時(CLR)即時編譯(JIT)編譯成機器代碼,再由CUP去執行它。所以說C#的執行必須通過二次編譯。
 
      二、執行效率
      1、運行速度方面
      從這個方面來說的話,C++是最快的。因為C++編譯后成為機器碼可以直接運行,但是JAVA編譯完后需要JVM解釋,C#編譯后需要由CLR進行二次編譯。
     2、編譯效率方面
     從這個方面來說的話,C++編譯后的機器碼並不是每個操作系統通用的,如果換到其他操作系統上就需要再次編譯。同樣,C#通過二次編譯后的機器代碼也是如此。所以這個時候JAVA JVM的優勢就體現出來了,JAVA的字節碼文件一次編譯處處運行,換個操作系統仍然無需再次編譯。所以,從編譯效率來說,JAVA是最高的。
    3、安全角度考慮
     從安全角度考慮,C#是這幾中語言中最為安全的,它其中定義的相關安全機制很好的確保了系統的安全。
 
個人總結:小弟總結如下:
     c++並不保證一定效率高於java和c#,就像匯編語言也不保證效率高過c一樣。 但他們都提供了一種效率更高的機會,首先要你水平夠高,才能寫出效率更高的程序,否則,即使你用了c++/c甚至匯編,也可能生成的是低效率程序。 其次,對於c++還要看你用的編譯器寫的水平高低,看你編譯時用了什么樣優化。 再說,開發時用什么語言,考慮得遠不是執行效率高一個因素,大多數情況下,執行效率是排在很后面的一個不重要因素。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM