自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

為什么Java語(yǔ)言比CPP競(jìng)爭(zhēng)編程要慢?

開(kāi)發(fā) 后端
最重要的因素是開(kāi)始競(jìng)爭(zhēng)性編程時(shí)選擇合適的語(yǔ)言。通常,我們選擇語(yǔ)法簡(jiǎn)短,執(zhí)行速度非??旎蛭覀兪煜さ恼Z(yǔ)言,并且我們知道特定語(yǔ)言的所有工作模式,無(wú)論是Java還是C ++。

 最重要的因素是開(kāi)始競(jìng)爭(zhēng)性編程時(shí)選擇合適的語(yǔ)言。通常,我們選擇語(yǔ)法簡(jiǎn)短,執(zhí)行速度非??旎蛭覀兪煜さ恼Z(yǔ)言,并且我們知道特定語(yǔ)言的所有工作模式,無(wú)論是Java還是C ++。

 

[[359031]]

 

大多數(shù)程序員使用C ++進(jìn)行競(jìng)爭(zhēng)性編程,也有許多老程序員轉(zhuǎn)而使用C ++。像Gennady Korotkevich,Errichto這樣的最受好評(píng)的競(jìng)爭(zhēng)性程序員,以及許多其他程序員,都使用C ++進(jìn)行競(jìng)爭(zhēng)性編程,但是為什么競(jìng)爭(zhēng)性編程的Java語(yǔ)言比C ++少得多?讓我們了解一下

C ++簡(jiǎn)單加法程序:

 

為什么Java語(yǔ)言比CPP競(jìng)爭(zhēng)編程要慢?

 

 

為什么Java語(yǔ)言比CPP競(jìng)爭(zhēng)編程要慢?

 

Java簡(jiǎn)單加法程序:

 

為什么Java語(yǔ)言比CPP競(jìng)爭(zhēng)編程要慢?

 

我們可以看到C ++的執(zhí)行時(shí)間和內(nèi)存比Java程序小得多。對(duì)于大型程序來(lái)說(shuō),這是一個(gè)很大的問(wèn)題。

與C ++相比,Java競(jìng)爭(zhēng)性編程較慢的原因有很多,這使程序員避免使用它。下面列出了一些常見(jiàn)的。

1.為I / O操作選擇錯(cuò)誤的類(lèi)或使用錯(cuò)誤的語(yǔ)法

與C ++相比,Java語(yǔ)言相對(duì)很慢。JAVA中通常有兩個(gè)用于I / O操作的類(lèi):Scanner類(lèi)和BufferedReader類(lèi)。大多數(shù)程序員,特別是初學(xué)者,都使用Scanner類(lèi)進(jìn)行I / O操作,并且由于語(yǔ)法長(zhǎng)而避免使用Buffered Reader類(lèi)進(jìn)行I / O。

掃描器類(lèi)中的內(nèi)部解析操作使程序的執(zhí)行非常緩慢,而B(niǎo)uffered Reader類(lèi)僅讀取輸入,并且根據(jù)操作的需要進(jìn)行進(jìn)一步的解析。在競(jìng)爭(zhēng)性編程中,使用Scanner類(lèi)為Java程序創(chuàng)建TLE問(wèn)題。

 

2.編譯和執(zhí)行過(guò)程

可以根據(jù)程序的執(zhí)行和編譯過(guò)程來(lái)區(qū)分編程語(yǔ)言。某些語(yǔ)言是口譯語(yǔ)言,意味著解釋器逐行檢查特定口譯語(yǔ)言的語(yǔ)法,例如Python。

編譯語(yǔ)言直接將程序轉(zhuǎn)換為機(jī)器代碼。結(jié)果,這些語(yǔ)言比解釋器語(yǔ)言快得多。解釋器花費(fèi)很少的時(shí)間來(lái)分析源代碼。但是,執(zhí)行該過(guò)程的總時(shí)間要慢得多。與諸如C或C ++的編譯語(yǔ)言相比,這使Interpreted編程語(yǔ)言的執(zhí)行非常慢。這就是為什么Python比C ++和Java慢的原因。

Java既不是編譯語(yǔ)言也不是解釋語(yǔ)言。它位于中間。Java是與平臺(tái)無(wú)關(guān)的語(yǔ)言,因此在所有編程語(yǔ)言中都非常流行。字節(jié)碼使其成為一種與平臺(tái)無(wú)關(guān)的語(yǔ)言。這就是Java的優(yōu)勢(shì)。

它使程序的執(zhí)行比C ++程序慢,因?yàn)闆](méi)有像C ++中的Java那樣發(fā)生用于執(zhí)行和編譯的中間操作。程序執(zhí)行緩慢的原因是,如果虛擬機(jī)未運(yùn)行,則啟動(dòng)Java代碼的開(kāi)銷(xiāo)很大。·

 

3.內(nèi)存消耗

Java程序的內(nèi)存消耗比C ++程序更多。

我們都知道Java本身管理內(nèi)存,不需要程序員的明確干預(yù)。垃圾收集器本身可確保清理未使用的空間,并在不需要時(shí)釋放內(nèi)存。因此,額外的垃圾回收器會(huì)占用額外的內(nèi)存來(lái)跟蹤java程序的所有內(nèi)存消耗。

對(duì)于Java程序員來(lái)說(shuō),不注意內(nèi)存管理是有益的。它由JVM和垃圾收集器自動(dòng)完成,但C ++中不存在垃圾收集器??赡軙?huì)發(fā)生內(nèi)存泄漏,但這會(huì)使C ++程序非常輕巧。

因此,與Java程序相比,C ++程序的內(nèi)存消耗非常少。結(jié)果,它有助于 快速執(zhí)行C ++程序。

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

責(zé)任編輯:華軒 來(lái)源: 今日頭條
相關(guān)推薦

2012-04-11 09:19:08

Haskell編程

2020-03-18 14:08:48

Windows操作系統(tǒng)功能

2018-05-23 00:20:29

2017-04-05 18:10:05

R語(yǔ)言開(kāi)發(fā)Ross

2017-11-21 14:41:29

編程語(yǔ)言Python

2020-01-22 16:53:54

編程語(yǔ)言PythonJava

2010-01-22 15:14:37

學(xué)習(xí)C++

2010-11-03 09:22:00

C語(yǔ)言

2021-04-06 15:20:05

編程語(yǔ)言JavaIT

2016-03-08 09:50:42

2021-02-23 10:19:46

編程技能開(kāi)發(fā)

2015-05-25 15:31:56

C語(yǔ)言學(xué)習(xí)和使用 C 語(yǔ)言

2022-01-17 16:09:43

Go語(yǔ)言開(kāi)發(fā)

2014-07-02 09:56:33

2015-04-08 10:46:11

2015-05-12 11:04:42

Java EE學(xué)習(xí)Java EE

2021-11-27 05:00:43

線程邏輯地址

2015-07-31 16:29:15

DockerJavaLinux

2018-05-30 14:49:51

編程語(yǔ)言API語(yǔ)法

2018-08-16 08:03:21

Python語(yǔ)言解釋器
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)