首页 > 解决方案 > Python语言能成为未来最快的语言吗?

问题描述

最近我研究了python语言,很多人抱怨语言的速度。我想知道这种语言可以更快吗?

标签: python

解决方案


询问编程语言的速度是没有意义的。编程语言是一组抽象的数学规则和限制。这是一个规范。一张纸,本质上。

在我们这里谈论的意义上,一张纸没有速度。

为了执行一些用编程语言编写的程序,需要实现该语言。此外,您需要编写一个可以执行的程序。你需要在一些特定的环境(CPU、RAM、操作系统、机器架构……)中执行这个程序

然后,只有这样你才能测量运行需要多长时间。

但是现在您正在测量许多变量:

  • 该程序
  • 环境
  • 实施
  • 实现的具体版本
  • 语言

由于您有这么多变量且只有一个数据点,因此无法判断哪个变量对结果的贡献是多少。

我看到的许多 Python 基准测试都使用在 Intel AMD64 CPU 上的 Linux 上运行的 CPython。然而,这个基准有点不公平:

  • CPython 实际上是一个非常简单的实现。它不使用高性能语言引擎中通常使用的任何优化,例如自适应优化推测内联多态内联缓存动态类型反馈去虚拟化转义检测等等。
  • 与几乎所有现代操作系统一样,Linux 并未针对运行类似 Python 的语言进行专门优化。它更针对类 C 语言进行了优化。例如,Linux 有虚拟内存,众所周知这会对垃圾收集产生负面的性能影响。
  • 英特尔 AMD64 CPU 并未专门针对运行类似 Python 的语言进行优化。它们更针对类 C 语言进行了优化。例如,它们包含对 Python 没有真正帮助的优化,当芯片空间和这些晶体管可以更好地用于 Python 特定的优化时。

例如,查看 Azul Vega-3 CPU 和相应操作系统的设计,它们都是专门为运行内存安全、指针安全、类型安全的语言而设计的,具有垃圾收集、动态分派和高度的运行时多态性。

如果你想在 Python 和 C 之间进行公平的比较,你需要在一个 Python 实现上运行你的 Python 代码,该 Python 实现具有相同数量的研究、工程、开发、人力、金钱和资源投入其中。 C 实现(例如 Microsoft Visual C、Clang/LLVM、GCC 等)在一个为运行 Python 而同样优化的操作系统上,在一个具有相同数量的研究、工程、开发、人力、金钱的 CPU 上, 并投入大量资源以使 Python 快速运行,并且使用与生产英特尔至强相同的先进工艺生产。

如果你花足够的研究、工程、开发、人力、金钱和资源来让 Python 快,那么它会很快。

历史上有很多例子:70 到 90 年代 Lisp 和 Smalltalk 大肆宣传,人们在 Lisp 和 Smalltalk 编译器和虚拟机上花费了大量资金,你瞧,这些实现变得更快了。当 Self VM 出现时,它与当时的许多 C++ 实现竞争。然后,Sun 削减了 Self 项目的资金,那段时间也有 C++ 炒作,所以钱都花在了 C++ 编译器上,而且速度很快。

在那之后,出现了 Java 炒作,人们在 JVM 上花钱。(有趣的是,Self 的开发者在 Sun 削减资金后,成立了自己的公司并建立了一个 Smalltalk 虚拟机,并在意识到 Java 和 Smalltalk 非常相似之后,他们建立了一个 JVM。这个 JVM 速度如此之快,以至于 Sun 收购了这家公司如果他们没有把开发人员赶出公司,他们本来可以免费使用 JVM 技术。)Oracle HotSpot 仍然基于前者编写的 Animorphic Smalltalk VM 的代码库自我开发者。

现在,我们正处于 ECMAScript 炒作中,一旦公司开始向 ECMAScript 引擎投入资金,这些引擎在短短几年内就变得快了十倍。(其中一个驱动因素是谷歌的 V8 引擎,它实际上是由一些离开甲骨文成立自己公司的前 Self 开发人员设计的。)

那里有一些相当快的 Python 执行引擎。我个人很期待 GraalPython。而且我怀疑如果人们开始在 Python 实现上投入资金,他们也会发现仍有很大的改进潜力。例如,TruffleRuby(由同一个人构建)已经证明它在某些情况下可以击败 C,并且与 Microsoft Visual C 或 Clang/LLVM 等相比,开发它的团队实际上是微不足道的。


推荐阅读