Python 和其他的脚本语言在性能上跟一些编译语言(如C语言)比较要差不少,例如这里有两个用 C 和 Python 语言编写的斐波纳契数列计算程序:
C语言:
- int fib(int n){
- if (n < 2)
- return n;
- else
- return fib(n - 1) + fib(n - 2);
- }
- int main() {
- fib(40);
- return 0;
- }
Python语言:
- def fib(n):
- if n < 2:
- return n
- else:
- return fib(n - 1) + fib(n - 2)
- fib(40)
下面是执行的时间比较:
- $ time ./fib
- 3.099s
- $ time python fib.py
- 16.655s
尽管在 Web 环境中,指令执行的速度并不重要,因为瓶颈是在 I/O 上。但我也同时在其他地方使用 Python ,因此让我们来看看如何优化 Python 程序的执行速度。
首先需要安装 Psyco,在 Linux 下可以这样:
- sudo apt-get install python-psyco
然后修改 Python 脚本来调用 psyco:
- import psyco
- psyco.full()
- def fib(n):
- if n < 2:
- return n
- else:
- return fib(n - 1) + fib(n - 2)
- fib(40)
再次执行的时间是:
- $ time python fib.py
- 3.190s
只需要 3 秒钟,使用 psyco 后 Python 的执行速度居然跟 C 语言相差无几。Psyco 通过即时编译代码避免逐行解释执行来提升运行速度的。
现在将我大部分 Python 代码加上下列脚本来利用 Psyco 提升运行速度:
- try:
- import psyco
- psyco.full()
- except ImportError:
- pass # psyco not installed so continue as usual