如何使用“dis.dis”来分析性能?

2024-01-12

我正在尝试使用 pythondis http://docs.python.org/2/library/dis.html用于试验和了解性能的库。以下是我尝试过的实验及其结果。

import dis

def myfunc1(dictionary):
    t = tuple(dictionary.items())
    return t

def myfunc2(dictionary, func=tuple):
    t = func(dictionary.items())
    return t

>>> dis.dis(myfunc1)

  4           0 LOAD_GLOBAL              0 (tuple)
              3 LOAD_FAST                0 (dictionary)
              6 LOAD_ATTR                1 (items)
              9 CALL_FUNCTION            0
             12 CALL_FUNCTION            1
             15 STORE_FAST               1 (t)

  5          18 LOAD_FAST                1 (t)
             21 RETURN_VALUE 

>>> dis.dis(myfunc2)

  4           0 LOAD_FAST                1 (func)
              3 LOAD_FAST                0 (dictionary)
              6 LOAD_ATTR                0 (items)
              9 CALL_FUNCTION            0
             12 CALL_FUNCTION            1
             15 STORE_FAST               2 (t)

  5          18 LOAD_FAST                2 (t)
             21 RETURN_VALUE    

现在,我明白了...

  • the 4 & 5最左边是行号
  • 中间的一列是机器调用的操作码
  • 右边的列是对象(opargs https://stackoverflow.com/a/12673195?)

...但这对于性能而言意味着什么?如果我试图决定使用哪个函数,我会如何使用dis比较两者?

提前致谢。


您(或至少是普通人)无法查看不同的汇编代码并判断哪一个更快。

尝试 IPython 中的 %%timeit 魔术函数。

它会自动运行这段代码几次,并给你一个客观的答案。

我最近发现这篇博文 http://pynash.org/2013/03/06/timing-and-profiling/教如何在 Python 中测量此类事物。不仅是时间,还有内存使用情况。这篇文章的亮点(至少对我来说)是它教你实现 %lprun 魔术函数。

使用它,您将能够逐行查看您的函数,并准确了解每一行对总花费时间的贡献。

我已经使用了几周了,效果非常好。

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

如何使用“dis.dis”来分析性能? 的相关文章

  • Python从int到string的快速转换

    我正在用 python 求解大量阶乘 并发现当我完成计算阶乘时 需要相同的时间才能转换为字符串以保存到文件中 我试图找到一种将 int 转换为字符串的快速方法 我将举一个计算和 int 转换时间的例子 我正在使用通用的 a str a 但感
  • 将 numpy 数组写入文本文件的速度

    我需要将一个非常 高 的两列数组写入文本文件 而且速度非常慢 我发现如果我将数组改造成更宽的数组 写入速度会快得多 例如 import time import numpy as np dataMat1 np random rand 1000
  • 为什么我的代码不能根据字典解码加密字符串?

    我有一本字典 其中包含代表字母的键和值 例如一个简单的 DICT CODE b g n a p o x d t y 我收到了一个加密代码 并将该字符串转换为一个列表 其中每个项目都是一个单词 我需要根据字典中的项目来解决它 代码示例是 wo
  • Tweepy StreamListener 到 CSV

    我是 python 新手 我正在尝试开发一个应用程序 使用 Tweepy 和 Streaming API 从 Twitter 检索数据并将数据转换为 CSV 文件 问题是此代码不会创建输出 CSV 文件 也许是因为我应该将代码设置为在实现例
  • 当单词以“|”分隔时如何读取文件(埃因霍温)?

    在Python中 我有一个文件 其中的单词由 例如 city state zipcode 我的文件阅读器无法区分单词 另外 我希望我的文件阅读器从第 2 行而不是第 1 行开始 如何让我的文件阅读器分隔单词 import os import
  • 可以用 Django 制作移动应用程序吗?

    我想知道我是否可以在我的网站上使用 Django 代码 并以某种方式在移动应用程序 Flutter 等框架中使用它 那么是否可以使用我现在拥有的 Django 后端并在移动应用程序中使用它 所以就像models views etc 是的 有
  • PySide6.1 与 matplotlib 3.4 不兼容

    当我只安装PySide6时 GUI程序运行良好 但是一旦我安装了matplotlib及其依赖包 包括pyqt5 则GUI程序将无法运行并输出以下错误消息 This application failed to start because no
  • 与 while 循环一样,如何跳过 for 循环中的步骤?

    我尝试像 while 循环一样跳过 for 循环中的几个步骤 在 while 循环中 步骤根据特定条件进行调整 如下面的代码所示 i 0 while i lt 10 if i 3 i 5 else print i i i 1 result
  • Python多处理错误“ForkAwareLocal”对象没有属性“连接”

    下面是我的代码 我面临着多处理问题 我看到这个问题之前已经被问过 我已经尝试过这些解决方案 但它似乎不起作用 有人可以帮我吗 from multiprocessing import Pool Manager Class X def init
  • 具有屏蔽无效值的 pcolormesh

    我试图将一维数组绘制为 pcolormesh 因此颜色沿 x 轴变化 但每个 x 的 y 轴保持不变 但我的数据有一些错误值 因此我使用屏蔽数组和自定义颜色图 其中屏蔽值设置为蓝色 import numpy as np import mat
  • Pandas style.bar 颜色基于条件?

    如何渲染其中一列的 Pandas dfstyle bar color属性是根据某些条件计算的 Example df style bar subset before after color ff781c vmin 0 0 vmax 1 0 而
  • 由于 json 字符串化 dict 键导致数据丢失

    考虑下面的例子 gt gt gt import json gt gt gt d 0 potato 0 spud gt gt gt json dumps d 0 potato 0 spud gt gt gt json loads json d
  • 为什么 java.util.Arraylist#clear 按照 OpenJDK 中的方式实现?

    http grepcode com file repository grepcode com java root jdk openjdk 6 b14 java util ArrayList java 473 http grepcode co
  • 处理大文件的最快方法?

    我有多个 3 GB 制表符分隔文件 每个文件中有 2000 万行 所有行都必须独立处理 任何两行之间没有关系 我的问题是 什么会更快 逐行阅读 with open as infile for line in infile 将文件分块读入内存
  • 如何使用 matplotlib 为圆柱体的每个单独面添加颜色

    我正在尝试为圆柱体的每个面着色 但是我不确定如何进行 我尝试了以下方法 for i in range 10 col append for i in range 10 for j in range 20 col i append plt cm
  • Python:高精度time.sleep

    你能告诉我如何在 Win32 和 Linux 上的 Python 2 6 中获得高精度睡眠函数吗 您可以在中使用浮点数sleep http docs python org library time html time sleep 该参数可以
  • 在 Django shell 会话期间获取 SQL 查询计数

    有没有办法打印 Django ORM 在 Django shell 会话期间执行的原始 SQL 查询的数量 Django 调试工具栏已经提供了此类信息 例如 5 QUERIES in 5 83MS但如何从 shell 中获取它并不明显 您可
  • 如何为所有用户安装 Anaconda python?

    Anaconda python 发行版 https store continuum io cshop anaconda 非常方便地部署科学计算环境 SCE 并根据需要切换python版本 默认情况下 安装会将 python 定位到 anac
  • 长/宽数据到宽/长

    我有一个数据框 如下所示 import pandas as pd d decil 1 decil 1 decil 2 decil 2 decil 3 decil 3 decil kommune AA BB AA BB AA BB 2010
  • 缓存 Flask-登录 user_loader

    我有这个 login manager user loader def load user id None return User query get id 在我引入 Flask Principal 之前它运行得很好 identity loa

随机推荐

  • Phonegap - 从图库中选择图像

    谁能告诉我 或者指出如何从 Phonegap Android 中的手机图片库中获取图像 有关于访问相机 效果很好 但不选择现有图像的文档 我正在寻找 Phonegap Javascript 而不是 Java 提前致谢 呃 那个Camera文
  • 限制 xquery 中的结果数量

    我有以下内容Xquery code for w in words let freq count corpus eq w div count content2 text eq w order by freq descending return
  • Linux 中的 Python OSError no 7(参数列表太长)

    我正在尝试打开一个新的子进程 它将接受一些输入文件并在其他文件中生成输出 虽然大多数情况下它都能正常运行 但当我尝试进行一些压力测试时 它会失败并给出以下错误跟踪 File home admin Workspace metadata plu
  • ARM 平台上的 SIGABRT 信号没有回溯?

    我在用着 回溯 and backtrace symbols fd 信号处理程序中的函数 用于生成用于调试的回溯 GDB 不可用 它们在 x86 桌面 Ubuntu 上运行良好 但是在目标设备 基于 ARM 上 Abort 信号的回溯 由于双
  • 在 WebLogic 10.3.5 上使用 Arquillian 进行 @EJB 注入不起作用

    我正在使用 Arquillian 在 WebLogic 10 3 5 上运行基本单元测试 不幸的是 EJB注入对我不起作用 并且在调用EJB时 得到一个NullPointerException 我发现的示例不需要添加 ejb jar xml
  • Redux with React - 与组件共享存储的正确方法

    Redux 的存储服务最终被 React 应用程序中的各个组件所使用 它公开的方法 例如dispatch getState和subscribe 可供所有类型的组件 例如容器或展示 使用 我认为传递商店服务的方法是一个重要的设计决策 我看到两
  • 无法在 Google App Engine 上部署应用程序:appengine-web.xml 不包含 元素

    当我单击在 netbeans 中的 google 应用引擎上部署应用程序时 这些是生成的错误消息 让我告诉你 最初 可能是我输入了错误的密码 导致应用程序部署失败 但现在 当我单击部署应用程序时 它不会询问我电子邮件或密码 无论如何 我该如
  • 如何使用 scala play 使用 OAuth1.0a 签署 POST?

    我正在尝试实施 LTI 启动请求 http www imsglobal org LTI v1p1 ltiIMGv1p1 html http www imsglobal org LTI v1p1 ltiIMGv1p1 html 使用 Scal
  • 在 jQuery.ajax 中,哪些 HTTP 状态代码算作成功?

    The 文档 http api jquery com jQuery ajax 似乎没有具体说明 jQuery ajax 中 成功 的含义 是 2xx 代码吗 只有200 从源代码来看 if status gt 200 status lt 3
  • javascript中的别名函数[重复]

    这个问题在这里已经有答案了 可能的重复 如果 Javascript 拥有一流的功能 为什么它不起作用呢 https stackoverflow com questions 8773579 if javascript has first cl
  • 无法在 Mountain Lion 上安装 pg gem

    升级到 Mountain Lion 后 我在使用 Rails 时遇到了很多麻烦 到目前为止 我试图解决这些问题并在互联网上搜索了几个小时 以确保我的系统具有升级后运行 Rails 的所有依赖项 我更新了我的 Homebrew 安装 我更新了
  • iOS 请求权限对话框未显示在屏幕录制或 QuickTime 视频上

    有谁知道App Store什么时候开始要求应用程序预览必须在物理设备上并显示此弹出窗口 即使当我将 iPhone Xs 镜像到 Mac 时 也不会显示弹出窗口 如果视频上没有弹出窗口 则应用商店拒绝应用预览 有人知道解决这个问题的更好方法吗
  • 将 mysqli_query 结果存储在会话中

    我想将 MySQLi 查询的结果存储为会话变量 以便我可以重用它而无需再次执行查询 我不想在网站的每个页面上或每次刷新页面时都执行相同的查询 我已经尝试了下面的代码 但出现了诸如 对象无法存储在会话中 和 mysqli fetch arra
  • 在node.js中读取csv文件的内容

    我正在尝试在nodejs中实现一个模块 刚刚开始在nodejs中工作 其要求如下 上传 csv 文件 读取 csv 文件的内容 目前用于restful api的框架是 express 4 2 0 和用于文件上传的multer 现在我已经在我
  • 如何将字符串处理为子列表层?

    这是示例表单 稍后我将尝试用文字解释它 我有一份分解字符串的清单 say a a a b a a b a c a b a a c a c a 其中 b 是标准 1 c 是标准 2 我想把它分成这样的列表 a a a b a a b a c
  • CSS3 动画颜色分步

    我正在尝试在按钮上制作一个动画来改变color and background color从白色到黑色 我不想要任何褪色 所以我发现我可以使用animation timing function step 然而 当我使用它时 动画不会达到黑色
  • 使用Sphinx创建PDF时如何避免“嵌套太深”错误?

    我有一个相当复杂的项目 有相当大的文档 转换正常用户指南使用 Sphinx 转为 PDF 通过make latexpdf效果很好 但是 如果我还想在所有函数 类和模块文档中包含库引用 则该命令将失败并显示 LaTeX Error Too d
  • AngularJS 时间选择器 ng-change

    我正在使用 AngularJS TimePicker ui bootstrap timepicker 我想在时间选择器更改时触发一个事件 我寻找 ng change 属性 但没有找到 我的目的是我想保存时间更改时对模型所做的更改 现在我已经
  • 无法启动接收器 com.google.firebase.iid.FirebaseInstanceIdInternalReceiver

    我的应用程序集成了 FCM 来接收推送通知 并且运行正常 但是 我面临安装时随机崩溃的问题 它是非常随机的 发生在 OS 6 0 设备上 直到最新 但随机发生 代码方面 在服务类中仅显示通知代码已编写并在清单中添加了服务 我在应用程序加载方
  • 如何使用“dis.dis”来分析性能?

    我正在尝试使用 pythondis http docs python org 2 library dis html用于试验和了解性能的库 以下是我尝试过的实验及其结果 import dis def myfunc1 dictionary t