為什麼Java語言比CPP競爭編程要慢?

2020-12-23 還能說晚安咩

本篇文章來自一個國外的網站。如果有不對的地方還請多多見諒。

最重要的因素是開始競爭性編程時選擇合適的語言。通常,我們選擇語法簡短,執行速度非常快或我們熟悉的語言,並且我們知道特定語言的所有工作模式,無論是Java還是C ++。

大多數程式設計師使用C ++進行競爭性編程,也有許多老程式設計師轉而使用C ++。像Gennady Korotkevich,Errichto這樣的最受好評的競爭性程式設計師,以及許多其他程式設計師,都使用C ++進行競爭性編程,但是為什麼競爭性編程的Java語言比C ++少得多?讓我們了解一下

C ++簡單加法程序:

Java簡單加法程序:

我們可以看到C ++的執行時間和內存比Java程序小得多。對於大型程序來說,這是一個很大的問題。

與C ++相比,Java競爭性編程較慢的原因有很多,這使程式設計師避免使用它。下面列出了一些常見的。

1.為I / O操作選擇錯誤的類或使用錯誤的語法

與C ++相比,Java語言相對很慢JAVA中通常有兩個用於I / O操作的類:Scanner類和BufferedReader類。大多數程式設計師,特別是初學者,都使用Scanner類進行I / O操作,並且由於語法長而避免使用Buffered Reader類進行I / O。

掃描器類中的內部解析操作使程序的執行非常緩慢,而Buffered Reader類僅讀取輸入,並且根據操作的需要進行進一步的解析。在競爭性編程中,使用Scanner類為Java程序創建TLE問題。

2 。編譯和執行過程

可以根據程序的執行和編譯過程來區分程式語言。某些語言是口譯語言,意味著解釋器逐行檢查特定口譯語言的語法,例如Python。

編譯語言直接將程序轉換為機器代碼。結果,這些語言比解釋器語言快得多。解釋器花費很少的時間來分析原始碼。但是,執行該過程的總時間要慢得多。與諸如C或C ++的編譯語言相比,這使Interpreted程式語言的執行非常慢。這就是為什麼Python比C ++和Java慢的原因。

Java既不是編譯語言也不是解釋語言。它位於中間。Java是與平臺無關的語言,因此在所有程式語言中都非常流行。字節碼使其成為一種與平臺無關的語言。這就是Java的優勢。

它使程序的執行比C ++程序慢,因為沒有像C ++中的Java那樣發生用於執行和編譯的中間操作。程序執行緩慢的原因是,如果虛擬機未運行,則啟動Java代碼的開銷很大。·

3.內存消耗

Java程序的內存消耗比C ++程序更多。

我們都知道Java本身管理內存,不需要程式設計師的明確幹預。垃圾收集器本身可確保清理未使用的空間,並在不需要時釋放內存。因此,額外的垃圾回收器會佔用額外的內存來跟蹤java程序的所有內存消耗。

對於Java程式設計師來說,不注意內存管理是有益的。它由JVM和垃圾收集器自動完成,但C ++中不存在垃圾收集器。可能會發生內存洩漏,但這會使C ++程序非常輕巧。

因此,與Java程序相比,C ++程序的內存消耗非常少。結果,它有助於 快速執行C ++程序。

我們可以選擇任何一種語言進行競爭性編程,但是首先,我們必須清楚其所有基本主題以及特定語言的工作方式,這將對初學者非常有益。

相關焦點

  • 5月編程最新語言指數排名 java不再是第一 php才是未來最好語言
    前幾天谷歌CEO皮查伊在會議展示了人工智慧的成果,在人工智慧上谷歌領先世界,這次的展示讓人工智慧重新改變的人們認識,也直接導致人工智慧程式語言Python的熱度在5月排名第一。從5月排名指數上看出來java首次被Python超越成為第一寶座,PHP挺近第四位,緊接這才是c#。每個人都說PHP是世界上最好的語言,在PHP每次指數都不斷提高下,不久將來PHP才是最好語言。
  • 最好的程式語言?美國出數據了,Java吃香,PHP敗了
    編碼江湖,長期以來就不存在什麼武林盟主,相反的,各類程式語言則在自己擅長的領域獨領風騷,誰要敢挑頭立盟主,就會死於滿天的口水之中。如今一組來自美國的數據,卻再次引起了「世界上最好程式語言」之爭。它的缺點也很多,速度慢、移動領域表現糟糕、由於是動態語言,因此需要進行更多測試,且會帶來某些只在特定運行時中出現的錯誤。Python在美國人才市場的表現如何呢?美國Python程式設計師的平均年薪為107000美元,崗位數量26856個,崗位主要集中在紐約市、山景城和舊金山。
  • 初學編程為什麼要選擇Java語言
    Java語言的實用性是非常好的,Java是一種非常簡單的程式語言,是新一代語言的代表,在使用過程中具有很多的優點,並且應用範圍非常廣泛,能夠結合很多工具進行使用。很多初學者在開始學習程式語言的時候都會選擇Java語言,選擇Java語言的原因是什麼呢?下面小編大家具體介紹。
  • 為什麼要學習Java開發 學Java有什麼優勢?
    Java應用非常廣泛,為此很多小夥伴選擇學習Java開發,有些零基礎學習Java開發,有些應屆生選擇學習Java開發,為什麼轉行Java的小夥伴越來越多呢?2、Java程式設計師有著一個相對公平的競爭環境作為一個Java程式設計師如果你有能力,你就委以重任。所謂相對公平就是,不論長相,不論背景,能力決定一切。廣大的青年才俊們,只要你有真本事,就不用擔心自己在這個行業的前途。
  • 編程入門學什麼語言好?
    首先應該明確學習程式語言的目的-工作或興趣,這兩者差別比較大!如果是考慮就業問題,那麼根據2019年末的一個流行度調查,關於程式語言的排名,目前前三的分別是:Java(難)C(很難)Python(較難)
  • 蘋果,安卓開發,手機app,C語言JAVA的關係
    首先,android開發,繞不開的就是JAVA編程,因為android的底層就是java,再底層就是C語言,可以這樣理解:java是一種程式語言,android應用用java開發,而c語言是另一種程式語言,也可以在android開發,但是需要通過java去調用C語言。
  • 程式語言那麼多,選擇學習C語言的三大理由!
    都2020年了,為什麼大學裡教的第一門語言還是C?最近在網上看到很多同學都在吐槽這個問題。程式語言那麼多,C語言到底有何優勢值得大家選擇呢?首先作為一門已經問世50年的老語言了,C語言已經很老了,但不可否認的是它仍然很能打,無論是曾經風靡一時的java還是現在火熱的python,在風口過後,屹立不倒的還是C語言。根據最新的TOIBE排名,C語言高居榜首,而且縱觀近20年程式語言的排名變化,C語言也一直都是前三甲,這充分說明了它的江湖地位!
  • 選擇java,你絕對不會後悔!
    學Java的人現在確實很多,一般選擇入行做IT做編程開發的人,基本都把Java作為首選語言。為什麼說選擇java是比較好的呢,主要是從以下幾個方面來看的:1、高頻率使用java最為當今最火爆的程式語言,也是當今使用率最高的程式語言。如今各種手機軟體,開發軟體等都離不開java語言,各大企業的運營也都離不開java人才的支持。
  • 零基礎學習Java者必須了解的Java語言常識以及知識
    獲取更多精彩文章請關注云主宰蒼穹引言:根據TIOBE程式語言排行榜2019年三月份榜單排名,Java語言位居榜首。Java語言以其良好的面向對象設計思想獲得了市場和程式設計師的喜愛。那麼你是否想要學習Java語言了,畢竟TIOBE的排名代表著程序語言的未來趨勢。
  • 祖國這麼強大,為什麼國內的IT行業沒有採用中文程式語言?
    首先,大部人熟知的程式語言主要就是PHP、java、C三大主流,最近幾年python也後來居上。但是有一個重要因素,計算機程式語言本來就是一個非常國際化的交流工具,隨著最近幾年網際網路的興起,程式語言作為計算機的基礎,未來肯定會發揮更加重要的作用,網際網路博大精深並沒有明確邊界,所以程式語言本身也得具備國際化的能力。
  • 開課吧:最值得學的程式語言是什麼?程式語言通用學習方法分享!
    如果您對編程有興趣,想要以後致力於編程這個方向,那是肯定要下一番苦功夫的。說實話沒有一門程式語言是好學的,要是那麼簡單就可以學會了,那是個人就是程式設計師了。最值得學的程式語言是什麼呢?零基礎學習編程首先要選對自己的方向,目前整體的方向上分為前端開發,後端開發,大數據,雲計算,人工智慧,運維測試等等,自己要選定好這個方向,選定好了,再去選擇一門語言去學習。
  • 選Python還是選Java?2020年,頂尖程式設計師最應該掌握的7種程式語言
    蘿蔔白菜,各有所愛,AI 工程師和科學家可以根據項目需要,從眾多程式語言中選擇最適合自己的。有人曾經將編程比作做菜,那程式語言就是首先要準備的食材或廚具。C:一把菜刀一口炒鍋,一個很好用的灶,隔壁有個菜市場。
  • 大神為你分析 Go、Java、C 等主流程式語言
    在論述的過程中會結合華為各語言編程專家和華為電信軟體內部的骨幹開發人員的交流,摒棄語言偏好或者語言教派之爭,儘量以客觀公正的角度來論述下各個語言的特點和不足,對語言選型作為一個客觀的參考。把這些寫出來,期望得到大家的指正與反饋,讓整個分析更客觀,性能方面,著重對 Go 做深入剖析參考。內容很多,期望不會讓你望而卻步。
  • 關於java圖標是個咖啡的N種猜測
    為什麼java的圖標是個咖啡杯呢?小編也很好奇,於是收集了一些關於為什麼是咖啡杯的各種猜測,你認為哪個最靠譜?但由於註冊重名的問題,大家集思廣益想了很多,一個個去測試能否註冊,直到第四位的java才註冊成功,於是所有人慶祝的喝了一杯咖啡。之後咖啡也成為了java圖標的一部分。第三個版本名字是馬克·奧頗門(為java起名字的人)在一家咖啡店與同事品嘗咖啡時得到靈感的。Java是印度尼西亞爪哇島的英文名稱,因盛產咖啡而聞名。
  • TIOBE 11 月程式語言:Python超越Java!
    10 月份程式語言排名前十的分別是:C,Java,Python,C++,C#,Visual Basic, JavaScript ,PHP ,R,SQL。 11 月份程式語言排名前十的分別是:C,Python,Java,C++,C#,Visual Basic, JavaScript ,PHP ,R,SQL。
  • Docker Hub 官方倉庫發布程式語言包
    現在他們又提供了各種程式語言的映像,包括: c/c++ (gcc), clojure, go (golang), hy (hylang), java, node, perl, php, python, rails, 和 ruby. 我們很高興的是 AWS 和 Perl 以及 Hy 項目都已經加入貢獻者行列。
  • JAVA並發編程:並發問題的根源及主要解決方法
    比如java中簡單的一條語句count += 1。映射到CPU指令有三條,讀取count變量指令,變量加1指令,變量寫回指令。雖然在高級語言(java)看來它就是一條指令,但實際上卻是三條CPU指令,並且這三條指令的原子性無法保證。也就是說,可能在執行到任意一條指令的時候被打斷,CPU被其他線程搶佔了。
  • java如何快速入門?
    相信我,Java是一種程式語言,如果你集中Java的一個知識面首先去專注學習,那麼學習Java還是挺容易的;但是,如果你想一下子把Java的各個應用領域知識都去接觸,試圖花最短的時間去學習完Java,那麼最後的結果可能會令你失望。
  • OpenJdk1.8筆記——java啟動流程
    Jdk中java的入口函數文件為openjdk\jdk\src\share\bin\main.c中的main方法(window上為WinMain),然後調用jdk8u-dev/jdk/src/share/bin/java.c的JLI_Launch方法,啟動一個jvm虛擬機;程序入口
  • 動力節點Java學院2021年Java學習路線圖最新出爐啦
    Java在程式語言排行榜中一直牢牢佔據榜首位置,幾乎所有的大中型網際網路的應用系統在伺服器端開發首選都是Java編程,正因如何吸引這不少年輕人投入該行業,Java雖不想其它程式語言那麼複雜,但是知識體系還是很龐大的,因此想要學好並非容易之事,不少想要跨入Java編程行業的同學們通過網絡搜索各式各樣的學習資料