我使用 PyPy 是否错误?它比标准 Python 慢 10 倍

2024-02-28

我听说过有关 PyPy 的好消息。特别是我听说它非常快,这让我想知道它是否可用于我的嵌入式项目。

我下载了PyPy-2.6 for my Windows 7PC,并将内容解压到一个目录中。

我编写了一个小型测试程序来进行基准测试:


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 是否错误,或者它只是对某些应用程序更快?

Edit

感谢 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秒的启动成本什么的,但是之后就更快了。


它仅对于某些应用程序来说更快。引用PyPy doc http://pypy.org/features.html:

您应该注意在两种情况下 PyPy 无法加速您的代码:

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

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

Since your program seems to run on the order of 10-2 or 10-1 seconds, the JIT compiler doesn't do you any good.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我使用 PyPy 是否错误?它比标准 Python 慢 10 倍 的相关文章

随机推荐

  • 更新模型时如何更新counter_cache?

    我有一个简单的关系 class Item belongs to container counter cache gt true end class Container has many items end 假设我有两个容器 我创建一个项目并
  • x86 asm 中 NOT 指令的简单示例

    有人能解释一下 x86 汇编器中 NOT 指令的具体作用吗 在我所知道的编程语言中 NOT 用于检查特定状态是否不正确 例如 if Isset var 但在汇编器中 运算符似乎做了其他事情 我不明白操作数到底是做什么用的 有人可以用一个简单
  • 错误 TS1127:在 Angular 7 中运行 Karma 测试时出现无效字符

    我收到错误error TS1127 Invalid character在 Visual Studio Code 终端中 为 Angular 7 应用运行 Karma 测试时 命令行版本 7 3 9 I have 一份 Karma 测试规范在
  • Scapy:处理部分 TLS 段

    我正在尝试使用 Scapy 从 pcap 中提取 TLS 元数据 我能够成功解析数据包和单个消息 例如 client hello server hello 等及其字段 我遇到的问题是当 TLS 记录分布在多个 TCP 数据包 段时 这种情况
  • boost:序列化重构(加载)

    我正在使用 boost serialization 将数据结构保存到文件中 实际数据是类和子类的指针向量 然而 被序列化的类的构造函数将另一个实例化的类 Agent 作为参数 该类 Agent 是控制与模拟 API webots 通信的对象
  • 使用 linQ 和 lambda 表达式删除记录

    我想使用 linq lambda 表达式删除 sql 数据库的记录 我应该怎么办 这里 student 是我的表 db 是 edmx 文件的对象 public bool DeleteRecord int caurseID studentEn
  • Java - 如何使非字符串对象的 JComboBox 显示字符串名称?

    我想做JComboBox元件展示String名称 而不是参考文献 但是 我不知道这是如何做到的 下面显示了我的代码 public class Properties extends JPanel implements ItemListener
  • 为什么在运行单元测试时,django 设置会导入两次,并且测试数据库会创建两次?

    姜戈 1 3 皮查姆 1 5 3 我正在为使用 GEOS 保存 Point 对象的 Django 应用程序编写单元测试 对于本地测试 我按照 GeoDjango 文档遵循了自定义 Spatialite 后端的每一步 每当我尝试使用 Poin
  • 如何检查json对象是否为数组

    我是 python 新手 在将 json arraylist 对象从 java 发送到 python 时 我遇到了这个问题 从 java 发送 json 对象时 arraylist 的 json 结构是 firstObject firstV
  • Magento V1.7 网格视图 - 添加制造商属性以查看

    On 这一页 http www foxtrotgear com index php tactical gear equipment html mode grid我想在商品名称的正下方添加制造商名称 但似乎无法使其正常工作 尝试了很多建议 但
  • 阿格达。冒号之前/之后的参数

    定义数据类型时 我可以在冒号之前 传递 一些参数 data Image A B Set f A B B Set where im f A B x A Image f f x 但出于未知原因 我似乎无法在函数声明中执行此操作 exIm A B
  • MySQL:在同一个 MySql 实例上克隆 MySQL 数据库

    我想编写一个复制当前数据库的脚本sitedb1 to sitedb2在同一个 mysql 数据库实例上 我知道我可以将 sitedb1 转储到 sql 脚本 mysqldump u root p sitedb1 gt db name sql
  • 文本渲染器。如何使用尾省略号渲染多行文本?

    我如何呈现这样的文本 简单列表视图 尝试这样的代码不会出现省略号 TextRenderer DrawText listGraphics anItem Text GetItemFont anItem textRec Color FromKno
  • Java代码中如何标记忽略返回值?

    C 约定标记该函数仅因副作用而调用 并且在这个特定的调用中我们对返回值不感兴趣 void getSomethingAndDoAction Java中有类似的东西吗 The 容易出错的项目 https errorprone info has
  • 将音频输出重定向到手机扬声器,将麦克风输入重定向到耳机

    是否可以将音频输出重定向到手机扬声器并仍然使用麦克风耳机输入 如果我将音频路由重定向到手机扬声器而不是耳机 它也会重定向麦克风 这是有道理的 但我似乎不能仅仅重定向麦克风输入 有任何想法吗 这是我用来将音频重定向到扬声器的代码 UInt32
  • 在Xamarin中动态添加入口控件

    我想获取XML 输入控制 from API 可用于JSON Entry 控件的所有属性均采用 JSON 格式 我想将它们添加到 xml页面并获取它们的值 当用户进入应用程序时 ViewModel 通过数据绑定 UPDATE 根据答案更新代码
  • 如何自定义 Eclipse 的 getter 和 setter 生成?

    如何配置 Eclipse 来生成带有参数变量前缀的 getter 和 setter Example private String someVariable public void setSomeVariable String aSomeVa
  • 有没有适用于 Android 传真的本机应用程序?

    我想开发一个传真应用程序 我在谷歌上搜索并找到了一些链接 用于在android上开发传真应用程序的应用程序 但是我想使用android的本机应用程序开发应用程序 在一些网站上 我读到免费的网络服务可用于发送 使用Android移动应用程序接
  • Rcpp 公开类的序列化

    我在 R 包中编写了一个 C 类 并将其暴露给 R 命名空间RCPP EXPOSED CLASS and RCPP MODULE 一切都很好 gt index An object of class Index Slot index C ob
  • 我使用 PyPy 是否错误?它比标准 Python 慢 10 倍

    我听说过有关 PyPy 的好消息 特别是我听说它非常快 这让我想知道它是否可用于我的嵌入式项目 我下载了PyPy 2 6 for my Windows 7PC 并将内容解压到一个目录中 我编写了一个小型测试程序来进行基准测试 import