Python 和其他的脚本语言在性能上跟一些编译语言(如C语言)比较要差不少,例如这里有两个用 C 和 Python 语言编写的斐波纳契数列计算程序:

C语言:

  1. int fib(int n){  
  2.    if (n < 2)  
  3.      return n;  
  4.    else 
  5.      return fib(n - 1) + fib(n - 2);  
  6. }  
  7.  
  8. int main() {  
  9.     fib(40);  
  10.     return 0;  

Python语言:

  1. def fib(n):  
  2.   if n < 2:  
  3.      return n  
  4.   else:  
  5.      return fib(n - 1) + fib(n - 2)  
  6. fib(40

下面是执行的时间比较:

  1. $ time ./fib  
  2. 3.099s  
  3. $ time python fib.py  
  4. 16.655s 

 

尽管在 Web 环境中,指令执行的速度并不重要,因为瓶颈是在 I/O 上。但我也同时在其他地方使用 Python ,因此让我们来看看如何优化 Python 程序的执行速度。

首先需要安装 Psyco,在 Linux 下可以这样:

  1. sudo apt-get install python-psyco 

然后修改 Python 脚本来调用 psyco:

  1. import psyco  
  2. psyco.full()  
  3.  
  4. def fib(n):  
  5.   if n < 2:  
  6.      return n  
  7.   else:  
  8.      return fib(n - 1) + fib(n - 2)  
  9. fib(40

再次执行的时间是:

  1. $ time python fib.py  
  2. 3.190s 

只需要 3 秒钟,使用 psyco 后 Python 的执行速度居然跟 C 语言相差无几。Psyco 通过即时编译代码避免逐行解释执行来提升运行速度的。

现在将我大部分 Python 代码加上下列脚本来利用 Psyco 提升运行速度:

  1. try:  
  2.     import psyco  
  3.     psyco.full()  
  4. except ImportError:  
  5.     pass # psyco not installed so continue as usual