为什么Java语言比CPP竞争编程要慢?

开发 后端
最重要的因素是开始竞争性编程时选择合适的语言。通常,我们选择语法简短,执行速度非常快或我们熟悉的语言,并且我们知道特定语言的所有工作模式,无论是Java还是C ++。

 最重要的因素是开始竞争性编程时选择合适的语言。通常,我们选择语法简短,执行速度非常快或我们熟悉的语言,并且我们知道特定语言的所有工作模式,无论是Java还是C ++。

 

[[359031]]

 

大多数程序员使用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问题。

 

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 ++程序。

我们可以选择任何一种语言进行竞争性编程,但是首先,我们必须清楚其所有基本主题以及特定语言的工作方式,这将对初学者非常有益。

责任编辑:华轩 来源: 今日头条
相关推荐

2020-03-18 14:08:48

Windows操作系统功能

2012-04-11 09:19:08

Haskell编程

2018-05-23 00:20:29

2017-11-21 14:41:29

编程语言Python

2017-04-05 18:10:05

R语言开发Ross

2020-01-22 16:53:54

编程语言PythonJava

2010-11-03 09:22:00

C语言

2010-01-22 15:14:37

学习C++

2016-03-08 09:50:42

2021-04-06 15:20:05

编程语言JavaIT

2021-02-23 10:19:46

编程技能开发

2015-05-25 15:31:56

C语言学习和使用 C 语言

2022-01-17 16:09:43

Go语言开发

2015-04-08 10:46:11

2014-07-02 09:56:33

2015-05-12 11:04:42

Java EE学习Java EE

2021-11-27 05:00:43

线程逻辑地址

2015-07-31 16:29:15

DockerJavaLinux

2018-05-30 14:49:51

编程语言API语法

2018-08-16 08:03:21

Python语言解释器
点赞
收藏

51CTO技术栈公众号