就像一个黑匣子,很多时候我们不知道python内部是怎样执行代码的,而且DEBUG的时候也没有机器指令可以查看,非常不利于代码优化。但是没关系,现在我们有Dis模块来对代码进行性能剖析。
为什么下面第一个函数比第二个函数耗得内存更少?
如果你没有厉害到那个程度是很难想出来的,但是我们使用Dis模块却能很容易找到答案:
结果:
Dis的结果其实很容易阅读:
第一列:对应的源代码行数。
第二列:对应的内存字节码的索引位置。
第三列:内部机器代码的操作。
第四列:指令参数。
第五列:实际参数。
两个函数的dis分析用*号隔开了,大家可以清晰地看到两个函数之间的语句区别。 第二个函数的字节码索引最大到了30,而第一个函数的字节码索引最大仅到了22,因此,第一个函数耗得内存比第二个函数少 。
而且,在第一列和第二列之间的 >> 号表示跳转的目标,大家可以看第二个函数第四列的 18,表示其跳转到了索引为18的指令,也就是ROT_TWO。第二个函数的跳转也比第一个函数多,这也可能导致其在某种特殊情况下的效率可能会比第一个函数低。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
相关推荐
是Python学习的另一方向,网络编程在生活和开发中无处不在,哪里有通讯就有网络,它可以称为是一切开发的“基石”。对于所有编程开发人员必须要知其然并知其所以然,所以网络部分将从协议、封包、解包等底层进行深入剖析
发表于 03-09 15:47
玩这个,Python标准库中的dis模块就非常有用了; dis模块为Python字节码提供了一个
发表于 05-22 15:48
家族不起作用。你能建议使用哪种代码剖析工具吗?我想分析代码性能,函数执行时间等。让我知道是否有任何其他有效的方法进行
发表于 03-10 10:26
在互联网编程语言盛行的今天,Python是比较流行的编程语言之一。但很多程序员对于Python代码性能的方法并不了解。今天这里主要为大家介绍三种提高
发表于 08-03 18:37
本文档的主要内容详细介绍的是python代码示例之基于Python的日历api调用代码实例。
发表于 09-06 14:25
•42次下载
当我们开始精通编程语言时,我们不仅希望实现最终的编程目标,而且还希望可以使我们的程序更高效。在本文中,我们将学习一些 Ipython 的命令,这些命令可以帮助我们对 Python 代码进行时间分析
发表于 11-25 10:43
•10次下载
的技巧进行整理。 0. 代码优化原则本文会介绍不少的 Python 代码加速运行的技巧。在深入代码优化细节之前,需要了解一些
发表于 09-01 11:28
•1715次阅读
1. 模块 以 .py 为后缀的文件,我们称之为 模块,英文名 Module。 模块让你能够有逻辑地组织你的 Python 代码段,把相关的
发表于 03-09 16:47
•2326次阅读
python通过reload重载模块动态更新最新代码。
## 1.1 reload
发表于 02-21 11:16
•547次阅读
[源代码]Python算法详解[源代码]Python算法详解
发表于 06-06 17:50
•0次下载
的时间与当前时间的距离,颜色越浅代表离当前时间越近。 下面就来教大家怎么用这个模块来观察你的代码性能表现。 1.准备 开始之前,你要确保Python和pip已经成功安装在电脑上,如果没
发表于 10-21 10:53
•353次阅读
Python字节码指令,而这些字节码是一种类似于汇编指令的中间语言,但是每个字节码对应的不是机器指令,而是一段C代码。 而Dis模块,就是用于查看这些字节码的运行轨迹,因此我们可以用
发表于 11-02 15:27
•603次阅读
Python是一种广泛使用的编程语言,用于开发各种类型的应用程序。它具有简单易学的语法和强大的功能,可以用于编写简单的脚本、开发桌面应用、构建Web应用、进行科学计算等多种用途。在本文中,我们将详细
发表于 11-22 10:31
•1303次阅读
Python是一种强大的编程语言,它支持模块化编程,使得开发者可以将代码分解为可重用且独立的模块。模块是一个包含函数、类和变量等定义的文件,
发表于 11-22 14:46
•957次阅读
Python是一种高级编程语言,它被广泛用于开发各种类型的应用程序,从简单的脚本到复杂的网络应用和机器学习模型。要运行Python代码,您需要一个Python解释器,它可以将您的
发表于 11-28 16:02
•901次阅读
评论