在 2017 年 Python 语言峰会上,Victor Stinner 提出了一些改进 Python 性能的想法,他认为用户现在正在将 Python 的性能与 Rust 或 Go 进行比较,Python 核心开发人员需要找到一种加速 Python 的方法,以保持其与其他语言的竞争力。
但 Stinner 也表示 Python 并不像其他语言那样容易优化,主要是因为 C API 阻碍了这一块的创新性发展。 PyPy 的 CPyExt API 已经取得了很大的进步,但仍然有一些轻微的兼容性问题。 PyPy 几年前曾试图重新实现 NumPy 扩展,最终也失败了。 NumPy 是 Python 的 C 扩展包之一,从本质上来说必须适用于任何替代实现,但现实却并未做到如此。
Stinner 认为 just-in-time (JIT) 编译可能是一种方向,但可惜的是在各种项目上尝试(如 Unladen Swallow、Pyston 和 Pyjion )后,都未能成功。另外,PyPy 使 Python 的速度提高了五倍,是否应该放弃 CPython 而推广 PyPy ?在他看来,许多核心开发人员更喜欢 CPython 和 C API,但如果 Python 想在当今的语言组合中具有竞争力,则需要 JIT 或转到 PyPy 。
Stinner 还提出了一些其它的想法,比如说也许可以创建一个类似于 Python 的新语言,但更为严格,就像 Hack for PHP 那样,或许能实现 2x 目标。提前编译(AoT),也可能是一种实现 JIT 而无需长时间预热的可能性。另外像是多级 JIT ,类似 JavaScript,或许也能带来性能提升。
观点提出后,现场得到了许多赞同、反对和质疑的声音。Python 后续该如何发展,还需要这群核心开发者继续探讨和摸索。对此,你怎么看?欢迎留言评论。