Python/ target=_blank class=infotextkey>Python 是一种流行的编程语言,但它通常不是高速应用程序的首选。然而,麻省理工学院的计算机科学家和他们的同事开发了一种名为 Codon 的 Python 编译器,它可以将 Python 代码转换为本机机器代码,而不会牺牲运行时性能。
使用 Codon 可以使得 Python 加速在单个线程上大约为 10-100 倍或更多,并且 Codon 的性能通常与 C/C++ 相当或更好。Codon 通过依赖静态类型编译器引擎并省略动态类型操作和运行时反射等使代码更难以分析和优化的功能来实现这一点。
那么,Codon 真的像它声称的那样快吗?一位开发者在 Codon 论坛上进行了测试。
$ cat fib.py
def fib(n):
if n == 0:
return 0
elif n == 1:
return 1
else:
return fib(n-1) + fib(n-2)
if __name__ == "__main__":
import sys
print(fib(int(sys.argv[1])))
$ python fib.py 40
102334155
# mem: 8'816_KB
# time: 18.42_s
$ pypy fib.py 40
102334155
# mem: 74'596_kB
# time: 4.99_s
# ~= 3.7x
$ codon build -release fib.py
$ ./fib 40
102334155
# mem: 5'612_kB
# time: 0.26_s
# ~= 70.8x
最终,发现使用 Codon 编译的简单 Fibonacci 脚本比 CPython 版本快 70 多倍。
Codon 已在 Github 上开源,地址如下:
https://github.com/exaloop/codon
Codon 最初是作为在 Python 中创建高性能领域特定语言 (DSL) 的框架而开发的,现已发展成为一种与 Python 3 基本兼容的语言编译器。该工具链支持开发 DSL,这些 DSL 与添加的领域共享 Python 的语法和语义-特定功能和 IR 优化。由于 Codon 可以在没有任何 Python 运行时开销的情况下输出本机机器代码,因此该论文的作者声称他们可以使用 Python 脚本实现类似 C 的性能。
Codon 还可以显着加速标准 Python 程序,尽管那些依赖外部库(如 Django 或 DocUtils)的程序必须依赖 CPython 桥,该桥将性能限制为 CPython。尽管如此,Codon 正在商业上用于从量化金融和生物信息学到深度学习等领域,其开发人员计划在未来几个月内实现缺失的 Python 功能。