来源(51CTO.COM)

From: http://book.51cto.com/art/200907/137345.htm

在经过15 年的Python 使用和10 年Python 的教学之后,我们发现Python 唯一的缺点就是,在目前现有的实现方式下,与C和C++ 这类编译语言相比,Python 的执行速度还不够快。

本书后文将对实现方式的概念进行详细阐述。简而言之,目前Python 的标准实现方式是将源代码的语句编译(或者说是转换)为字节码的形式,之后再将字节码解释出来。由于字节码是一种与平台无关的格式,字节码具有可移植性。然而,因为Python 没有将代码编译成底层的二进制代码(例如,Intel 芯片的指令),一些Python 程序将会比像C这样的完全编译语言慢一些。

程序的类型决定了是否需要关注程序的执行速度。Python 已经优化过很多次,并且Python 代码在绝大多数应用领域运行的速度也足够快。此外,一旦使用Python 脚本做一些"现实"世界的事情,程序实际上是以C语言的速度运行的,例如,处理某一个文件或构建一个用户图形界面(GUI )。因为在这样的任务中,Python 代码会立即发送至Python 解释器内部已经被编译的C代码。究其根源,Python 开发速度带来的效益往往比执行速度带来的损失更为重要,特别是在现代计算机的处理速度情况下。

即使当今CPU 的处理速度很快,在一些应用领域仍然需要优化程序的执行速度。例如,数值计算和动画,常常需要其核心数值处理单元至少以C语言的速度(或更快)执行。如果在以上领域工作,通过分离一部分需要优化速度的应用,将其转换为编译好的扩展,并在整个系统中使用Python 脚本将这部分应用连接起来,仍然可以使用Python 。

本书我们将不会再谈论这个扩展的问题,但这却是一个我们先前所提到过的Python 作为控制语言角色的鲜活例子。NumPy 一个采用双语言混编策略的重要例子:一个Python 的数值计算扩展,NumPy 将Python 变为一个高效并简单易用的数值计算编程工具。你也许不会在你自己的Python 工作中采用这种扩展的方式编程,但是如果需要的话,Python 也是能够提供这种强大的优化机制的。

【责任编辑:董书 TEL:(010)68476606】

Link: http://www.asm32.net/article_details.aspx?id=4604