我听说过关于PyPy的好东西。特别是我听说它非常快,让我想知道它是否可用于我的嵌入式项目。
我为PyPy-2.6
个人电脑下载了Windows 7
,并将内容解压缩到一个目录中。
我已经编写了一个小测试程序,允许我进行基准测试:
import time
def fib(n):
if n == 0 or n == 1:
return 1
return fib(n - 1) + fib(n - 2)
t0 = time.time()
fib(20)
t1 = time.time()
print t1-t0
所以我去了PyPy解压缩的目录,运行了./pypy.exe hello.py
并得到了0.120
的答案。
然后我启动了一个cygwin控制台并运行python hello.py
并得到0.01
的答案。
我使用PyPy是错误还是仅对某些应用程序更快?
修改
感谢Rob指出JIT编译器需要时间来预热。
扩展我的示例代码会产生以下结果:
n PyPy Python 20 0.12 0.01 25 0.15 0.06 30 0.34 0.67 35 0.92 7.39 40 10.98 82.9
似乎有0.1秒的启动成本或其他东西,但之后它会更快。
答案 0 :(得分:5)
某些应用程序的速度更快。引用PyPy doc:
有两种情况你应该知道PyPy无法加速你的代码:
短暂运行的流程:如果它没有运行至少几秒钟,那么JIT编译器就没有足够的时间来预热。
如果所有时间都花在运行时库中(即在C函数中),而不是实际运行Python代码,那么JIT编译器将无济于事。
由于您的程序似乎以10 - 2 或10 - 1 秒的顺序运行, JIT编译器对你没有任何帮助。