我使用PyPy错了吗?它比标准Python

时间:2015-08-13 15:36:23

标签: python pypy

我听说过关于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秒的启动成本或其他东西,但之后它会更快。

1 个答案:

答案 0 :(得分:5)

某些应用程序的速度更快。引用PyPy doc

  

有两种情况你应该知道PyPy无法加速你的代码:

     
      
  • 短暂运行的流程:如果它没有运行至少几秒钟,那么JIT编译器就没有足够的时间来预热。

  •   
  • 如果所有时间都花在运行时库中(即在C函数中),而不是实际运行Python代码,那么JIT编译器将无济于事。

  •   

由于您的程序似乎以10 - 2 或10 - 1 秒的顺序运行, JIT编译器对你没有任何帮助。