用汇编实现的Python

4 投票
2 回答
2308 浏览
提问于 2025-04-16 10:12

我只是出于好奇,想知道Python是否可以用汇编语言来实现。如果不能的话,为什么还没有人这么做来解决速度问题。请原谅我在编程语言方面的无知。

2 个回答

6

原生代码并不是一种神奇的加速方法。编程语言的特性实际上会很大程度上影响这门语言的运行速度(比如,Erlang通过Hipe编译成原生代码后,运行速度仍然比较慢)。

16

主要的实现是用C语言写的,然后编译成机器代码(也就是CPU能读懂的汇编语言)。所以,理论上用汇编语言写是可能的,如果编译器能做到,人类也能做到。但实际上,这样做根本不现实。汇编语言比C语言更底层,这会大大增加开发时间,尤其是项目规模越大,时间可能会成倍增加。而且,汇编语言非常依赖平台,每个平台的移植工作都需要大量的精力(而且维护工作也会随着支持的平台数量增加而成倍增加,CPython的情况就是这样)。

除此之外,写成汇编语言是否真的能显著提高速度也是个大问题。把代码写得更接近硬件并不会神奇地让程序运行得更快(实际上,情况可能正好相反——很难找到一个程序员能 consistently 写出比四五个知名的C编译器更好的汇编代码)。而且,Python慢的原因主要是因为它有很多抽象和间接调用,而不是因为这些实现得很糟糕。

一种更有前景的方法(实际上已经被几个替代实现采用)是聪明的即时编译器(JIT),它保留了Python的动态特性,但利用了大多数Python程序对这种动态特性的使用很少的事实,通过在运行时识别最常见的执行路径并对其进行优化。这样的复杂程序通常也不是用汇编语言写的。

撰写回答