日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

java與C 代碼運行效率的對比(整理)

瀏覽:53日期:2022-08-14 13:49:02
1、Java 語言的概述

作為一種面向對象的程序設計語言,Java 與 C++極為 類似,但卻要比 C++簡單的多。它在集成其他語言的特點 和優勢的同時又有自己獨特的優勢。

Java 的主要特點如下:

(1)簡單性。Java 可以對內存中產生的垃圾進行自動收集, 大幅度降低了程序的復雜程度,此外,Java 添加了更為實 用的功能的,這使得程序開發更加簡單可靠。

(2)平臺獨 立性。Java 語言在程序編程過程中是先編譯成中間碼,然 后再進行裝載與校驗,最后通過翻譯出來的不同的機器碼 來執行。因此,只要能支持 Java 虛擬機,就可運行各種 J ava 程序。這也是 Java 最吸引人、使用方便的原因。

(3) 面向對象的技術。近年來軟件開發中使用最多的就是面向 對象的技術。面向對象技術是指在編程過程中,以一種更 加直觀的、人們更容易接受的方式來編程的技術。而 Java 的動態聯網編程特性,將面向對象的優勢發揮到最大。

2、C 語言的概述

C 語言,作為一種新的程序設計語言,它結合了匯編 語言與高級語言兩種語言的優勢,使得它的應用更加簡單、 普及。如今,C 語言已經應用于各種類型的微型機上。在編寫程序時,C 語言可以直接進行程序的編程。因此,C 語言在應用方面十分廣泛,具備很強的數據處理能力。C 語言的應用已不僅僅是用于軟件開發,各類科研都需要用 到 C 語言。

C 語言的優點:1.是簡潔緊湊、靈活方便;2.運算符 豐富;3.數據類型豐富;4.表達方式靈活多用;5.生成目標代碼 質量高、程序執行效率高;可移植性高。

因為 C 語言是將 相同數據堆放在一塊,這就使得 C 語言的數據存在很大的 安全缺陷,一旦出現意外,所有數據都將丟失。

此外,C 語言在語法限制以及變量的類型上比較寬松,這樣就會影 響到程序的安全性。而且 C 語言比其他高級語言的難度大, 完全掌握是很不易的。

3、c 和 java的 編譯器對比

Java與C/C++的編譯器對比實際上是代表了最經典的JIT編譯器與靜態編譯器的對比,

(注釋:JIT編譯器,英文寫作Just-In-Time Compiler,中文意思是即時編譯器。JIT編譯器能夠將MSIL編譯成為各種不同的機器代碼,以適應對應的系統平臺,最終使得程序在目標系統中得到順利地運行。 靜態編譯,就是編譯器在編譯可執行文件的時候,將可執行文件 需要調用的對應動態鏈接庫(.so或.lib)中的部分提取出來,鏈接到可執行文件中去,使可執行文件在運行的時候不依賴于動態鏈接庫。)

也很大程度上決定了Java與C/C++的性能對比的結果,

因為無論是C/C++還是Java代碼,最終編譯之后被機器執行的都是本地機器碼,哪種語言性能更高,除了它們自身的API庫實現得好壞以外,其余的比較就成了一場“拼編譯器”、“拼輸出代碼質量”的游戲。

當然,這種比較也是剔除了開發效率的片面對比,語言間孰優孰劣,誰快誰慢的問題都是很難有結果的爭論,下面我們就回到正題,看看這兩種語言的編譯器各有何優勢。

原因如下:

(1)因為JIT編譯器運行占用的是用戶程序運行時間,具有很大的時間壓力,它能提供的優化手段也嚴重受制于編譯成本。如果編譯速度不能達到要求,那用戶將在啟動程序或程序的某部分察覺到重大延遲,這點使得JIT編譯器不敢隨便引入大規模的優化技術,而編譯的時間成本在靜態優化編譯器中并不是主要的關注點。

  (2),Java語言是動態的類型安全語言,這意味著需要由虛擬機來確保程序不會違反語言語義或訪問非結構化內存。在實現層面上看,這就意味著虛擬機必須頻繁進行動態檢查,如對象實例訪問時檢查空指針、數組元素訪問時檢查上下界范圍、類型轉換時檢查繼承關系等等。對于這類程序代碼沒有明確寫出的檢查行為,盡管編譯器會努力進行優化,但是總體上仍然要消耗著不少的運行時間。

?。?)Java語言中雖然沒有virutal關鍵字,但是使用虛方法的頻率卻遠遠大于C/C++語言,這意味著運行時對方法接收者進行多態選擇的頻率要遠遠大于C/C++語言,也意味著JIT編譯器在進行一些優化,如方法內聯時難度要遠大于C/C++的靜態優化編譯器。

?。?)Java語言是可以動態擴展的語言,運行時加載新的類可能改變程序類型繼承關系,這使得很多全局的優化都難以進行,因為編譯器無法看見程序的全貌,許多全局優化措施都只能以激進優化的方式來完成,編譯器不得不時刻注意并隨著類型變化而在運行是撤消或重新進行一些優化。

?。?)Java語言中的對象內存分配都是堆上進行,只有方法中的局部變量才在棧上分配。而C/C++的對象則有多種內存分配方式,既可能在堆上分配,也可能在棧上分配,如果可以把線程私有的對象在棧上分配,將可以減輕內存回收的壓力,也不需要考慮內存屏障方面的問題。另外,C/C++中主要由用戶程序代碼來回收分配的內存,這就不存在無用對象篩選的過程,因此效率上(僅指運行效率,排除了開發效率)也垃圾收集機制要高。

(6)因為C是編譯型的,直接將源碼編譯成機器代碼;而JAVA是解釋型,源碼被編譯成二進制偽代碼,由JAVA虛擬機解釋執行。但是,由于C是編譯型的,它的可移植性差;而JAVA是解釋執行,因此具有很好的移植性,可跨平臺運行。

同時:編一個普通的本地應用程序,一般c 要快于java, 編web應用,由于c實現的cgi程序基本是進程型,而java application server 的管理servlet采用線程方式,所以,在訪問量大的情況下,java有優勢。

 (finally)Java語言相對C/C++的劣勢上面說了一大堆,倒不是說Java就真的不如C/C++了,相信大家也注意到了,Java語言的這些性能上的劣勢都是為了換取開發效率上的優勢而付出的代價,動態安全、動態擴展、垃圾回收這些“拖后腿”特性都為Java語言的開發效率作出了很大貢獻。何況,也不見得就沒有Java的JIT編譯器能做,而C/C++的靜態優化編譯器不能做的優化:由于C/C++編譯器的靜態性,以運行期性能監控為基礎的優化措施它都無法進行,如調用頻率預測(Call Frequency Prediction)、分支頻率預測(Branch Frequency Prediction)、裁剪未被選擇的分支(Untaken Branch Pruning)等,這些都會形成一些Java語言獨有的性能優勢

4、Java程序比C/C++程序慢的影響因素

1)解釋性語言固有開銷:java程序在運行時類加載器從類路經中加載相關的類,然后java虛擬機讀取該類文件的字節,執行相應操作.而C 編譯的時候將程序編譯成本地機器碼.一般來說java程序執行速度要比C 慢10-30倍.即使采用just-in-time compiling (讀取類文件字節后,編譯成本地機器碼)技術,速度也要比C 慢好多.

2)字節碼加載執行開銷:java程序要從網絡上加載類字節,然后執行,這也是導致java運行速度慢的原因.

3)運行時溢出檢測開銷:在程序運行過程中,java虛擬機要檢測數組是否越界,在C 中則不檢測.

4)堆與棧的區別:java中所有的對象都創建在堆中,沒有對象被創建在stack中,而C 有的對象和變量是創建在stack中的

5)運行時引用檢測開銷:java在運行過程中檢測對象的引用是否為空,如果引用指向都空指針,且執行某個方法時會拋出空指針異常

6)運行時類型檢測開銷:java運行時對類型檢測,如果類型不正確會拋出ClassCastException異常.

7)GC巨大開銷:java的垃圾回收機制較C 由程序員管理內存效率更低.

8)類型轉換開銷:java中的原始數據類型在每個操作系統平臺長度都是相同,而C 這些數據類型長度是隨操作系統的不同而不同,所以java在不同操作系統上執行時有個轉化過程.

9)String類型開銷:在java中String 是UNICODE.當java要操作一個 ASCII string 時,比C 效率上相對要低一些.

10)動態鏈接開銷:java中采用的是動態鏈接

5、結論

綜上所述,C 語言的運行效率 要比 Java 的高很多(有人說是高10-30倍)。因為 C 語言是屬于編譯型的,而 Java 語言則是解釋型的。Java 語言運行時要先被翻譯成計算機能 辨識的二進制代碼,然后才能執行。雖然在一些的程序測試 中 C 語言要快于 Java 語言,但這并不是絕對的。在實際中, 要根據不同語言應用范圍,才能選擇某一語言程序。

到此這篇關于java與C 代碼運行效率的對比(整理)的文章就介紹到這了,更多相關java和C 代碼運行效率內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Java
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产亚洲精品美女久久久久久久久久| 福利一区和二区| 欧美成人精品| 亚洲日本网址| 性欧美xxxx免费岛国不卡电影| 成人欧美一区二区三区的电影| 麻豆91精品视频| 欧美xxxx中国| 国产伦久视频在线观看| 亚洲黄色网址| 欧美不卡视频| 蜜桃视频第一区免费观看| 亚洲麻豆一区| 国产日韩中文在线中文字幕| 国产精品久久久久久模特| 精品欧美视频| 99成人在线视频| 蜜乳av另类精品一区二区| 亚洲欧美久久精品| 久久国产尿小便嘘嘘| 老鸭窝毛片一区二区三区| 日韩欧美一区免费| 蜜桃免费网站一区二区三区| 精品福利久久久| 免费人成黄页网站在线一区二区| 久久久久97| 美女日韩在线中文字幕| 久久精品国产精品亚洲毛片| 欧美午夜三级| 超碰在线99| 激情五月综合| 日韩精选在线| 日本久久精品| 亚洲一区网站| 国产精品17p| 久久久久国产一区二区| 欧美日韩精品免费观看视频完整| 亚洲精品伊人| 成人一二三区| 视频在线观看一区二区三区| 国产精品日本一区二区不卡视频 | 亚洲欧美日本日韩| 日本成人中文字幕| 中文字幕高清在线播放| 亚洲深夜影院| 国产精东传媒成人av电影| 久久国产影院| 欧美日韩午夜电影网| 天堂√中文最新版在线| 亚洲91在线| 久久久久欧美精品| 国产欧美在线观看免费| 91成人精品| 久久一区欧美| 免费在线视频一区| 日本一区二区免费高清| 亚洲精品美女91| 日韩国产一区| 五月国产精品| 亚洲国内欧美| 国产精品99久久久久久董美香| 欧美成人精品三级网站| 日本久久一区| 免费毛片在线不卡| 欧美激情日韩| 日韩在线观看一区二区三区| 99tv成人| 欧美激情在线精品一区二区三区| 日韩福利视频网| 四虎成人精品一区二区免费网站| 亚洲激情社区| 欧美一区二区三区激情视频| sm捆绑调教国产免费网站在线观看 | 人人爱人人干婷婷丁香亚洲| 午夜精品成人av| 国产欧美三级| 免费观看在线色综合| 国产麻豆久久| 久久精品一本| 91亚洲精品视频在线观看| 欧美精品一区二区久久| 精品视频97| 国产调教精品| 视频在线观看一区| 国产一区亚洲| 超碰成人av| 国产精品一区二区三区av麻| 亚洲一区成人| 美女网站一区| 日韩精品水蜜桃| 美女久久精品| 国产精品日韩精品中文字幕| 日韩国产在线不卡视频| 亚洲欧美日韩在线观看a三区| 青青久久av| 成人一区而且| 久久亚洲黄色| 国产精品免费大片| 亚洲人成网77777色在线播放| 美女网站一区| 婷婷成人综合| 日韩欧美午夜| 成人一二三区| 色婷婷亚洲mv天堂mv在影片| 老鸭窝一区二区久久精品| 国产精品久久久久久久久久久久久久久 | 模特精品在线| 欧洲毛片在线视频免费观看| 亚洲深夜视频| 国产精品蜜芽在线观看| 久久精品二区亚洲w码| 久久gogo国模啪啪裸体| 久久99蜜桃| 青青草国产成人99久久| 国产精品1luya在线播放| 91麻豆国产自产在线观看亚洲| 亚洲v在线看| 视频一区在线视频| 国产日韩一区二区三免费高清| 亚洲精华国产欧美| 久久精品国产999大香线蕉| 精品国产中文字幕第一页| 精品网站aaa| 天堂√中文最新版在线| 久久国产欧美| 欧美精品一线| 中文字幕成人| 在线免费观看亚洲| 日韩亚洲精品在线观看| 日韩avvvv在线播放| 国产精品欧美大片| 荡女精品导航| 久久久精品日韩| 亚洲黄色在线| 婷婷综合电影| 麻豆视频一区| 美女网站视频一区| 黄色亚洲大片免费在线观看| 热久久免费视频| 国产欧美91| 日本黄色精品| 在线日韩av| 99国内精品| 久久精品av麻豆的观看方式| 久久久久久久久成人| 肉色欧美久久久久久久免费看| 欧美一区三区| 免费精品视频在线| 国产情侣一区在线| 日韩国产一区二区| 亚洲欧美视频| 国产无遮挡裸体免费久久| 精品一区二区三区中文字幕视频| 伊人久久在线| 久久99伊人| 国产精品久久久久久久久久妞妞| 四虎8848精品成人免费网站| av在线日韩| 美国欧美日韩国产在线播放| 国产精品白丝一区二区三区| 久久三级福利| 日韩精品福利一区二区三区| 国产一区一一区高清不卡| 久久久久久黄| 日本伊人午夜精品| 国产一区三区在线播放| 欧美特黄一区| 国产精品夜夜夜| 99久久亚洲精品| 久久国产精品色av免费看| 日韩影院二区| 精品美女在线视频| 日韩精品诱惑一区?区三区| 日韩在线黄色| 日韩视频免费| 日韩黄色大片网站| 7m精品国产导航在线| 美女网站一区| 水蜜桃精品av一区二区| 蜜桃久久久久久| 亚洲美女久久精品| 中文精品电影| 电影天堂国产精品| 日韩不卡一二三区| 久久天堂av| 青草av.久久免费一区| 成人午夜国产| 日韩**一区毛片| 成人免费网站www网站高清| 无码日韩精品一区二区免费| 精品日韩视频| 国产精品视频一区二区三区四蜜臂 | 性欧美xxxx免费岛国不卡电影| 欧美一区免费| 亚洲夜间福利| 国产精品亚洲欧美日韩一区在线| 免费观看久久av| 国产一区二区三区四区| 亚洲精品无吗| 亚洲国产一区二区在线观看|