- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在尝试使用 python 的 dis
用于试验和理解性能的库。下面是我尝试过的实验,以及结果。
import dis
def myfunc1(dictionary):
t = tuple(dictionary.items())
return t
def myfunc2(dictionary, func=tuple):
t = func(dictionary.items())
return t
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
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
现在,我明白了......
4
& 5
是行号...但这一切在性能方面意味着什么?如果我试图决定使用哪个函数,我将如何使用 dis
来比较两者?
提前致谢。
最佳答案
您(或者至少是普通人)无法查看不同的汇编代码,并判断哪个更快。
尝试 IPython 中的 %%timeit 魔法函数。
它会自动多次运行这段代码,并给你一个客观的答案。
我最近找到了this blog post教授如何在 Python 中测量这些类型的东西。不仅是时间,还有内存使用。该帖子的亮点(至少对我而言)是它教您实现 %lprun 魔法函数。
使用它,您将能够逐行查看您的函数,并准确了解每个函数占总花费时间的比例。
我已经使用了几个星期了,非常好。
关于python - 如何使用 `dis.dis` 来分析性能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19322705/
我试图用 difflib 比较两个东西的字节码,但 dis.dis() 总是将它打印到控制台。有什么方法可以在字符串中获取输出? 最佳答案 如果您使用的是 Python 3.4 或更高版本,则可以使用
我一直在使用 dis 模块来观察 CPython 字节码。但最近,我注意到 dis.dis() 的一些不便行为。 以这个例子为例:我首先定义了一个函数multiplier,里面嵌套了一个函数inner
我正在尝试使用 python 的 dis用于试验和理解性能的库。下面是我尝试过的实验,以及结果。 import dis def myfunc1(dictionary): t = tuple(d
有没有办法在不重定向 sys.stdout 的情况下获取 dis.dis() 的输出?我试过: out=str(dis.dis()) 和 out="""""" out+=str(dis.dis())
我想了解如何使用 dis (the dissembler of Python bytecode) .具体来说,应该如何解释 dis.dis 的输出? (或 dis.disassemble )? . 这
特别是,它输出: >>> dis.dis(None) 22 0 LOAD_FAST 0 (x) 3 LOAD_CONST
有什么方法可以从 dis.dis 获得的反汇编中创建代码对象? 例如,我使用 co = compile('print("lol")', '', 'exec') 编译了一些代码。然后使用 dis.dis
使用 Python 3,dis.dis()适用于解析包含 for 循环语法的字符串: >>> import dis >>> dis.dis('for _ in range(10): pass')
简单的问题。 dis.read() 和 dis.readUTF() 有什么区别? 例如,dis.read()只读取字节数组,而dis.readUTF()访问String类型。 是否正确? 如果服务器有
在32.12. dis — Disassembler for Python bytecode — Python 3.6.3 documentation ,有一个例子说: 示例:给定函数 myfunc(
我将 opencv c++ API 用于计算机视觉应用程序,并使用 cv::Mat 结构管理矩阵。 Opencv 使用引用计数将创建的对象释放为 cv::Mat。我还将 libshogun 用于更具体
最近,我有一个 discussion关于以下两段代码的 SO(请参阅上下文): res = [d.get(next((k for k in d if k in s), None), s) for s
对于大学的一个项目,我们必须实现几种不同的算法来计算给定一组元素和所述元素之间的一组关系时的等价类。 我们被指示实现联合查找算法及其优化(按深度联合、大小联合)等。偶然地(做了一些我认为对算法的正确性
我有一个 EditText 并且想在键盘出现时给它更多的行。所以我正在寻找类似 “OnKeyboardAppearsListener” 的东西,但找不到。我认为它一定存在,但也许以不同的方式... 最
我想知道是否可以在 SAS DIS 中使用条件启动转换来根据给定表是否为空(无行)有条件地绕过另一个转换。 This链接似乎表明条件必须基于参数变量的值。 我的一个想法是在用户编写的代码转换中创建一个
我试图排除某些字符作为 YAML CloudFormation 模板中的参数字符串输入。具体来说,我试图不允许包含&符号。文档说我可以使用AllowedPattern作为正则表达式的参数属性,例如 A
是否有 HLA 的高级概述与 DIS模拟框架?一个可以托管另一个,反之亦然吗? 最佳答案 我目前(虽然只有一周左右)在模拟行业工作 - 对于任何错误,我提前表示歉意,如果我记得不正确的信息,我会纠正它
在使用 Emacs 的多年里,我从未用它来发送电子邮件。总是将其视为一个非常复杂的系统(更不用说电子邮件是一个过于复杂的系统来进行消息传递,但这是一个不同的提示)。现在,第一次使用 Gnus 并将其连
我有以下代码 code = ''' x = ['a','b','c'] for each in x: print(each) ''' 我使用了python的di
我想将文件读入字符数组列表。起初我认为这可能是一个非常巧妙的方法: ArrayList char_chain = new ArrayList(); try { fis = ne
我是一名优秀的程序员,十分优秀!