Python 和其他的脚本语言在性能上跟一些编译语言(如C语言)比较要差不少,例如这里有两个用 C 和 Python 语言编写的斐波纳契数列计算程序:
C语言:
01
int
fib(``int
n){
02
``if
(n < 2)
03
``return
n;
04
``else
05
``return
fib(n - 1) + fib(n - 2);
06
}
07
08
int
main() {
09
``fib(40);
10
``return
0;
11
}
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
正如我们说预想的,C 程序比 Python 要快很多,在我们这个例子中要快 5 倍之多。
尽管在 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
英文原文, OSCHINA翻译(转载请注明出处)