就像一个黑匣子,很多时候我们不知道python内部是怎样执行代码的,而且DEBUG的时候也没有机器指令可以查看,非常不利于代码优化。但是没关系,现在我们有Dis模块来对代码进行性能剖析。
为什么下面第一个函数比第二个函数耗得内存更少?
如果你没有厉害到那个程度是很难想出来的,但是我们使用Dis模块却能很容易找到答案:
结果:
Dis的结果其实很容易阅读:
第一列:对应的源代码行数。
第二列:对应的内存字节码的索引位置。
第三列:内部机器代码的操作。
第四列:指令参数。
第五列:实际参数。
两个函数的dis分析用*号隔开了,大家可以清晰地看到两个函数之间的语句区别。 第二个函数的字节码索引最大到了30,而第一个函数的字节码索引最大仅到了22,因此,第一个函数耗得内存比第二个函数少 。
而且,在第一列和第二列之间的 >> 号表示跳转的目标,大家可以看第二个函数第四列的 18,表示其跳转到了索引为18的指令,也就是ROT_TWO。第二个函数的跳转也比第一个函数多,这也可能导致其在某种特殊情况下的效率可能会比第一个函数低。
全部0条评论
快来发表一下你的评论吧 !