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

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

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

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

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

C ++簡單加法程序:

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

Java簡單加法程序:

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

我們可以看到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問題。

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

2 。編譯和執行過程

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

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

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

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

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

3.記憶體消耗

Java程序的記憶體消耗比C ++程序更多。

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

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

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

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

領取學習資料及教程點擊下方瞭解更多連結

來源:kknews為什麼Java語言比CPP競爭編程要慢?