为什么有些编程语言比其他语言快?

有很多编程语言。它们都有各自的怪癖,用于不同的事情。但是是什么让一种编程语言比另一种编程语言更快呢?...

现在有很多编程语言,每种语言都有自己的特点。由于不同的设计选择和用例,有些比另一些更快或更慢。当然,这种速度(或缺乏速度)通常是有代价的。简单地说,正是这些差异导致了这些性能变化。

programming-languages-speed

什么是程序设计语言(a programming language)?

不管编程语言看起来如何,它们仍然在做同样的事情:让你的计算机做一些事情。所有的代码行最终都被翻译成一系列模糊的数字(也称为机器代码)。可以说,所有编程语言(包括汇编语言,它将数字映射到可读的字)都是为了使创建软件更容易。

assembly

这些语言可以通过它们为程序员所做的抽象级别来分类。基本上,这就是语言本身要处理多少事情,在较低的级别上需要手动处理的事情。这往往使高级语言更容易编程,因为要学习和记忆的东西少了一点。

内存管理就是一个例子。对于一些抽象程度较低的语言,程序员必须手动说出手头的任务需要多少RAM,然后在任务完成后释放它。如果他们不这样做,或者发生了一些他们没有考虑到的事情,那么内存使用量可能会越来越大。像Java这样的高级语言会自动完成这项工作。

自动化成本

也就是说,使用高级语言肯定有一些缺点。即速度。有时,程序员控制的范围越广,程序的效率就越低。

例如,具有自动内存管理(通常称为垃圾收集)的语言可能比不实现此功能的语言慢。这是因为程序需要时间来遍历自身,并以特定的间隔清除内存。

garbage collection

编译:您的里程数可能会有所不同

一般来说,用C语言和C++语言编写的程序比大多数程序都快。大多数操作系统都是使用它们编写的,还有一些甚至更低级别的汇编代码。其中一个主要因素来自于它们被编译(与被解释相比)。

这意味着在运行之前,程序的源代码首先被翻译成一个较低的级别:机器代码。生成的产品称为二进制文件(例如DLL文件),它们与相关文件链接在一起,使它们工作,从而创建所谓的可执行文件。

binaries

然而,这样做的一个缺点是实际编译此类程序所需的时间。像mozillafirefox这样的大型浏览器可能需要半个小时左右的时间。幸运的是,现在的大多数软件都提前完成了这个过程,使得安装和使用变得更加容易。

由于最终结果是用一种计算机可以直接理解的语言编写的,所以速度往往相当快。将其与经过另一个步骤的解释语言进行比较。尽管如此,并不是所有的编译语言都是相同的。

编译器效率

为了把任何一种代码翻译成计算机能理解的东西(机器代码),它需要通过一个叫做编译器的特殊程序来运行。一种语言可以有多个编译器。例如,GCC(GNU编译器集合)和Clang都可以用来编译用C编写的程序。

既然编译器的工作是将程序翻译成机器代码,那么它的翻译效果会在一定程度上影响它的速度。例如,根据编译器的配置方式,同一个源代码的结果可能略有不同。

gcc compiler

这也意味着不同的编译语言可以比其他语言执行得更快或更慢。一般来说,C和C++被认为是非常快的,因为它们的编译器已经经历了多年的发展和改进。其他语言并不总是那么成熟。

解释语言:又一步

如前所述,解释语言不是预先编译的。相反,它们是在运行时被翻译的,通常由一个称为解释器的独立程序来翻译。例如,Java程序通过JVM(Java虚拟机)运行。

因为这些语言不需要事先编译,所以用它们编写的程序通常更容易**和测试。然而,其结果是,软件本身的速度会明显减慢。解释器逐行执行程序的源代码,这会导致速度损失。除此之外,解释器本身也需要一点时间来启动。

字节码:一个小小的妥协

由于其较慢的特性,许多解释语言实际上使用某种形式的编译来加速其性能。在运行之前,这些程序会被翻译成字节码,这是一种易于口译员使用的语言。例如,Java和Python在运行之前都会这样做,分别创建类和PYC文件。

java bytecode

基本上,这是在开发的易用性和速度之间的一种折衷。它比仅仅解释代码更快,而且比完全编译的代码更容易设置。字节码还有一个额外的好处,就是与编译成机器码的程序相比,字节码的可移植性更强。如果CPU架构存在解释器,它将运行。

在某些语言中,还有一种称为JIT(just-In-time)编译的方法。基本上,它接受字节码并将其编译成机器码。顾名思义,这是在程序运行时发生的。它的目的是加快执行速度,但代价是第一次启动速度较慢,因为它的某些部分需要时间来编译。

别担心

尽管如此,这些差异对大多数人来说并不是一个真正的问题,尤其是随着计算机的速度越来越快。虽然某些编程语言的速度肯定比其他语言快,但真正重要的是它能完成一些事情。

当然,如果你对编程很有经验的话,试着从你的代码中获得性能是很好的。但是,如果你刚开始学习,那么首先要担心的是如何学习动作。不管一门语言有多快或多慢,如果一开始什么都不写的话。

还有一个问题就是如何使用合适的工具来完成这项工作。例如,汇编语言非常适合编写操作系统,因为它的级别非常低。但对于普通的桌面应用程序来说,这是一种过度的杀伤力。还有一些为web设计的语言,或者帮助减少错误的代码,比如TypeScript等等。

当你学习一门编程语言时,你考虑了哪些因素?

  • 发表于 2021-03-13 15:07
  • 阅读 ( 346 )
  • 分类:IT

你可能感兴趣的文章

源代码(source code)和字节码(bytecode)的区别

...。计算机程序可以向计算机发出指令。它是用一套特定的编程语言编写的。编程语言有很多种。大多数编程语言都是高级编程语言。用高级语言编写的程序很容易被人或程序员理解。这些程序称为源代码。机器无法理解它们。因...

  • 发布于 2020-10-19 15:49
  • 阅读 ( 635 )

高级语言(high level language)和低级语言(low level language)的区别

...算机程序的集合称为软件。计算机程序或软件是用计算机编程语言编写的。世界上有大量的编程语言。计算机程序设计语言可分为两大类。它们是高级语言和低级语言。高级语言和低级语言之间的主要区别在于,高级语言是一种...

  • 发布于 2020-10-23 20:12
  • 阅读 ( 657 )

swift编程语言值得学习的7个原因

... Swift拥有现代编程语言的所有特征,并在整个编码过程中一直握着你的手。重要的本地功能包括: ...

  • 发布于 2021-03-12 01:39
  • 阅读 ( 456 )

为什么有些浏览器比其他浏览器快?

...果你不知道的话,JavaScript是一种可以在互联网上找到的编程语言。它通常支持用户体验功能,如交互式对象和动画。 ...

  • 发布于 2021-03-23 11:55
  • 阅读 ( 162 )

python成为未来编程语言的6个原因

学习哪种编程语言是一项吃力不讨好的任务。关于哪种语言是王者,哪种语言有缺陷的争论很激烈。尽管有很好的理由学习Python,但对于其中哪一个是“最好的”还没有明确的答案。 ...

  • 发布于 2021-03-23 12:03
  • 阅读 ( 244 )

facebook说,它的原型翻译技术比竞争对手快9倍

...上建立了一个逻辑结构,有点像语言学,”Auli说。 至于为什么这种方法没有得到更广泛的应用,Grangier指出,人工智能社区已经投入了大量的精力来使用RNNs进行翻译,人们很乐意改进。他说:“简而言之,人们只是没有在这方...

  • 发布于 2021-05-11 03:15
  • 阅读 ( 95 )

谷歌现在可以识别119种语言进行语音到文本的听写

...”来口述表情。表情功能首先面向英语使用者,不久将在其他语言中推出。 要访问语音输入功能,请安装Android或iOS的Gboard,然后按G键选择语言,然后选择设置滚轮。对于语音搜索,请使用谷歌应用程序并在语音设置菜单中选择...

  • 发布于 2021-05-29 10:46
  • 阅读 ( 132 )

python(python)和斯卡拉(scala)的区别

...务器应用程序。   什么是python(python)? Python是一种通用编程语言,由可移植的ansic编写,因此它可以在所有可行的平台上编译和运行,包括Unix、Windows、macos等。Python的核心语言和库在所有平台上都以相同的方式运行。谷歌、迪...

  • 发布于 2021-06-25 22:56
  • 阅读 ( 225 )

如何快学一门语言(learn a language fast)

...听新语言的广播节目。在电视上看电影、卡通片、新闻和其他节目。如果很难理解,可以试试你已经看过的电视节目的配音版本。 阅读技巧 用新语言阅读书籍、文章、报纸。你可以从简单的关卡开始,然后逐步前进。找到你喜...

  • 发布于 2021-06-27 22:32
  • 阅读 ( 241 )

宏(macro)和程序(procedure)的区别

...路。此外,汇编语言是一种有助于对微处理器进行编程的编程语言。总体而言,宏和过程是微处理器编程中的两个概念。 覆盖的关键领域 1.什么是宏-定义,功能2.什么是过程-定义,功能3.宏和过程的区别-关键区别的比较 关键术...

  • 发布于 2021-07-01 21:54
  • 阅读 ( 409 )

相关推荐