本篇文章來自一個國外的網站。如果有不對的地方還請多多見諒。
最重要的因素是開始競爭性程式設計時選擇合適的語言。通常,我們選擇語法簡短,執行速度非常快或我們熟悉的語言,並且我們知道特定語言的所有工作模式,無論是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 ++程式。
我們可以選擇任何一種語言進行競爭性程式設計,但是首先,我們必須清楚其所有基本主題以及特定語言的工作方式,這將對初學者非常有益。