PyPy 显示的基准测试结果不准确?

2023-11-29

我正在研究欧拉计划并想知道我是否可以使用 PyPy 加速我的解决方案。然而,我发现结果非常令人失望,因为计算需要更多时间。

d:\projeuler>pypy problem204.py
3462.08630405 mseconds

d:\projeuler>python problem204.py
1823.91602542 mseconds

由于毫秒输出是使用 python 计算的time模块,所以我使用内置基准测试命令再次运行它。

d:\projeuler>pypy -mtimeit -s "import problem204" "problem204._main()"
10 loops, best of 3: 465 msec per loop

d:\projeuler>python -mtimeit -s "import problem204" "problem204._main()"
10 loops, best of 3: 1.87 sec per loop

PyPy 报告称大约需要半秒才能完成运行。然而,我尝试运行 pypy Problem204 几次,但输出从未接近基准测试的 0.5 秒。与 pypy 不同,python 的 mtimeit 结果与输出一致。 pypy 给我的基准是不准确的,还是有一些我不明白的魔法?


注意时间

  1. 多次运行该语句(在您的情况下运行 10 次),并且
  2. 执行多次(默认为 3 次)并给出最小值,原因如下文档中概述.

这取决于您的代码,但 JIT 编译器完全有可能是造成这种令人困惑的结果的原因。每次启动新的 pypy 进程时都会产生 JIT 预热开销,但在 timeit 基准测试期间只发生一次(因为该进程运行_main在同一过程中多次)。此外,如果代码的某些部分运行得太频繁,以至于在_main运行一次,但只有当它运行三次时,后续运行也会更快,这进一步消除了第一次运行的最佳结果(即运行的结果)pypy problem204.py once).

The timeit结果是正确的,因为它(大致)匹配代码在最佳情况下的速度 - 预热 JIT 编译器,很少将 CPU 分配给其他程序等。 你的问题是你想知道一些不同的东西——包括 JIT 预热的时间。

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

PyPy 显示的基准测试结果不准确? 的相关文章

  • Python:使用 string.format() 将单词大写

    是否可以使用字符串格式将单词大写 例如 user did such and such format user foobar 应该返回 Foobar 做了这样那样的事情 请注意 我很清楚 capitalize 但是 这是我正在使用的代码 非常
  • pandas Wide_to_long 后缀参数

    我对在 pandas 中使用 Wide to long 时的参数有疑问 有一个参数叫suffix我不明白 在文档中它说 后缀 str 默认 d 捕获所需后缀的正则表达式 d 捕获数字后缀 没有数字的后缀可以用否定字符类 D 指定 您还可以进
  • 正则表达式,选择最接近的匹配

    假设以下单词序列 BLA text text text text text text BLA text text text text LOOK text text text BLA text text BLA 我想做的是将 BLA 中的文本
  • 使用 pandas 将字符串对象转换为 int/float

    import pandas as pd path1 home supertramp Desktop 100 life 180 data csv mydf pd read csv path1 numcigar Never 0 1 5 Ciga
  • Paramiko SSHException 通道已关闭

    我一直在使用 Paramiko 在 Linux Windows 机器上发送命令 它可以很好地在 Ubuntu 机器上远程执行测试 但是 它不适用于 Windows 7 主机 以下是我收到的错误 def unit for event self
  • numpy:大量线段/点的快速规则间隔平均值

    我沿着一维线有许多 约 100 万个 不规则间隔的点 P 这些标记线段 这样 如果点是 0 x a x b x c x d 则线段从 0 gt x a x a gt x b x b gt x c x c gt x d 等 我还有每个段的 y
  • 在Python中以交互方式执行多行语句

    我是 Python 世界的新手 这是我用 Python 编写的第一个程序 我来自 R 世界 所以这对我来说有点不直观 当我执行时 In 15 import math import random random random math sqrt
  • Django 不会以奇怪的错误“AttributeError: 'module' object has no attribute 'getargspec'”启动

    我对 Django 的内部结构有点缺乏经验 所以我现在完全陷入困境 它昨天起作用了 但我不记得我改变过任何重要的东西 当我转身时DEBUG True任何恰好位于列表中第一个的模块上都有堆栈跟踪 Traceback most recent c
  • Python——捕获异常的效率[重复]

    这个问题在这里已经有答案了 可能的重复 Python 常见问题解答 异常有多快 https stackoverflow com questions 8107695 python faq how fast are exceptions 我记得
  • 按多个键分组并对字典列表的值进行汇总/平均值

    在Python中按多个键进行分组并对字典列表进行汇总 平均值的最Pythonic方法是什么 假设我有一个字典列表 如下所示 input dept 001 sku foo transId uniqueId1 qty 100 dept 001
  • Pandas:将 pytz.FixedOffset 应用于系列

    我有一个带有timestamp列看起来像这样 0 2020 01 26 05 00 00 08 00 1 2020 01 26 06 00 00 08 00 Name timestamp dtype datetime64 ns pytz F
  • pandas 中连续数据的平行坐标图

    pandas 的 parallel coordinates 函数非常有用 import pandas import matplotlib pyplot as plt from pandas tools plotting import par
  • 为什么 __instancecheck__ 没有被调用?

    我有以下 python3 代码 class BaseTypeClass type def new cls name bases namespace kwd result type new cls name bases namespace p
  • Django Rest Framework POST 更新(如果存在或创建)

    我是 DRF 的新手 我阅读了 API 文档 也许这是显而易见的 但我找不到一个方便的方法来做到这一点 我有一个Answer与 a 具有一对一关系的对象Question 在前端 我曾经使用 POST 方法来创建发送到的答案api answe
  • 在python中读取PASCAL VOC注释

    我在 xml 文件中有注释 例如这个 它遵循 PASCAL VOC 约定
  • 更换壳牌管道[重复]

    这个问题在这里已经有答案了 在 subprocess 模块的 Python 2 7 文档中 我找到了以下片段 p1 Popen dmesg stdout PIPE p2 Popen grep hda stdin p1 stdout stdo
  • 更新 SQLAlchemy 中的特定行

    我将 SQLAlchemy 与 python 一起使用 我想更新表中等于此查询的特定行 UPDATE User SET name user WHERE id 3 我通过 sql alchemy 编写了这段代码 但它不起作用 session
  • 沿轴 0 重复 scipy csr 稀疏矩阵

    我想重复 scipy csr 稀疏矩阵的行 但是当我尝试调用 numpy 的重复方法时 它只是将稀疏矩阵视为对象 并且只会将其作为 ndarray 中的对象重复 我浏览了文档 但找不到任何实用程序来重复 scipy csr 稀疏矩阵的行 我
  • 如何从 nltk 下载器中删除数据/模型?

    我在 python3 NLTK 中安装了一些 NLTK 包 通过nltk download 尝试过它们 但不需要它们 现在想删除它们 我怎样才能删除例如包large grammars来自我的 NLTK 安装 我不想删除完整的 NLTK 安装
  • Python 中的字符串slugification

    我正在寻找 slugify 字符串的最佳方法 蛞蝓 是什么 https stackoverflow com questions 427102 in django what is a slug 我当前的解决方案基于这个食谱 http code

随机推荐

  • 如何在堆叠栏中显示每个日期范围的多个堆叠列

    本质上 目的是比较团队中每个成员每周执行的任务类别 我想在轴下方添加周数而不是 1 0 2 0 和 3 0 我得到了错误的结果 因为它仅显示 1 表示优秀 并且所有周 1 周 2 周 3 周 4 我选择开始日期为 1 12 2014 结束日
  • 获取传单中图层中的标记数

    我有一个 Leaflet 地图 其中有一个名为 flickrpics 的图层 该图层根据当前地图视图的 bbox 在 geojson 中动态加载 我想获得该图层中标记数量的简单计数 以便可以将其显示在图层控件中的图层标签旁边 我尝试过像 f
  • 语法错误,意外的“ ” (T_STRING)

    为什么我的 PHP 邮件代码总是给出 语法错误 第 4 行 C xampp htdocs GSP members php 中出现意外的 T STRING
  • 具有 2 个 y 轴的 Seaborn 箱线图

    如何创建具有 2 个 y 轴的 seaborn 箱线图 由于规模不同 我需要这个 我当前的代码将覆盖箱线图中的第一个框 例如 它由第一个轴的第一个数据项和第二个轴的第一个数据项填充 import pandas as pd import nu
  • 使用录制文件 .3gp 时,MediaPlayer 准备失败错误(1,-17)

    我正在尝试从 AudioRecorder 进行录制 然后尝试使用媒体播放器进行相同的播放 但它给出的 mediaplayer prepare 无法准备 谁能告诉我什么是合适的理由 下面是我正在使用的代码 public void onClic
  • UIScrollView无限滚动?

    有谁知道我如何创建无限滚动 4 Track iPhone 应用程序就是一个很好的例子 曲目编号上方和时间指示器下方有可滚动的 轮子 我假设它使用 UIScrollView 然后在滚动到视图时绘制子视图 有小费吗 source 3dbcrea
  • 在 Code::blocks 中调试

    如何在代码块中进行调试 我设置了几个断点并按下了调试 启动 但程序不会在任何这些断点处停止 我需要做什么才能让它发挥作用 我不知道你是否已经解决了 但我也遇到了同样的问题 并且刚刚解决了 我已经搜索过a lot一切都结束了 最终问题是 项目
  • 为非交互式 shell 获取 .bashrc 的正确方法

    我一直在尝试解决问题 以便能够在多个节点上运行 openmpi 最初我有一个问题 PATH and LD LIBRARY PATH变量未更新自 bashrc由 openmpi 会话创建的文件 所以我手动添加 prefix path to o
  • 熊猫从长到宽(未融化或类似?)[重复]

    这个问题在这里已经有答案了 我有一个像这样的融化的长格式数据框 name A A B B varA 1 2 1 2 varB 200 250 200 250 val 4 8 1 0 df pd DataFrame data zip name
  • 使用 BindingSource 的 Filter 属性时如何正确转义 SQL

    我继承了一个 C 应用程序 它通过 DataGridView 列出数据库表中的数据 还有一些用于过滤该数据的文本字段 这样做是这样的 String listFilter string Format City 0 this toolStrip
  • 地理编码器可以在模拟器上使用吗

    我正在使用地理编码器 它在我的设备上工作得很好 但在模拟器上不起作用 在 2 2 和 4 2 2 上尝试过它不起作用 这是我的代码 Geocoder myLocation new Geocoder AzanTime this Locale
  • 这是 WebMatrix PageData 中的错误吗?

    我想我可能在 WebMatrix 的 PageData 中发现了一个错误 但我不确定 它涉及如何将数据从部分页面传递回调用页面 在 WebMatrix 文档中 教程 例如 3 创建一致的外观 以及示例代码 建议将 PageData 作为在页
  • 通过批处理文件从 XML 文件中提取文本

    我必须通过批处理文件从 XML 文件中提取某些文本 我需要提取的部分之一是字符串标签之间
  • Java 和 php5 MD5 哈希之间的区别

    我面临着一个奇怪的问题 它与 Java 和 php5 中的 MD5 哈希相关 我认为在某些情况下以下代码不会 生成正确的 MD5 哈希值 public static String getMD5Hash String string try M
  • 使用 gdata xml 解析带有名称空间的 xml

    我正在开发一个ios应用程序 我正在用gdataxml解析我的xml 但我做错了 我的nslog为空 NSError error nil GDataXMLDocument xmlResult GDataXMLDocument alloc i
  • 如何解决错误:storage.mode(x) <-“double”中的错误:无法强制“list”对象输入“double”

    您好 我正在尝试运行 som 和 kmeans 分析 但我无法解决它 因为有一个错误代码 storage mode x 我怎么解决这个问题 cdata lt read delim Cluster txt stringsAsFactors F
  • 如何在 Flutter For Web 上发出 HTTP 请求?

    我正在构建一个向 NodeJS 服务器执行 HTTP 请求的应用程序 但是当我执行 HTTP 请求时 结果如下 Access to XMLHttpRequest at http 127 0 0 1 8000 from origin http
  • GitLab HTTP URL 上的 504 网关超时

    我已经在 Linux 机器上安装了 GitLab 6 0 并创建了许多项目 我可以使用 SSH URL 创建每个项目的本地克隆 但是当我尝试使用 HTTP URL 时 我得到一个504 网关超时 秒 当我将 HTTP URL 粘贴到 Sou
  • C#中的Double类型精度不是15位吗?

    我正在测试这段代码脑筋急转弯 double d1 1 000001 double d2 0 000001 Console WriteLine d1 d2 1 0 结果是 假 当我更改数据类型时 decimal d1 1 000001M de
  • PyPy 显示的基准测试结果不准确?

    我正在研究欧拉计划并想知道我是否可以使用 PyPy 加速我的解决方案 然而 我发现结果非常令人失望 因为计算需要更多时间 d projeuler gt pypy problem204 py 3462 08630405 mseconds d