于是使用dis来深入.
假设est_while.py代码如下.
#coding=utf-8
while 1:
pass
while True:
pass
下面是使用dis来进行剖析.
E:\>python -m dis test_while.py
2 0 SETUP_LOOP 3 (to 6)
3 >> 3 JUMP_ABSOLUTE 3
5 >> 6 SETUP_LOOP 10 (to 19)
>> 9 LOAD_NAME 0 (True)
12 POP_JUMP_IF_FALSE 18
根据python官方文档,dis输出报告的格式如下.
The output is divided in the following columns:
而while True这里(第5行),由LOAD_NAME和POP_JUMP_IF_FALSE指令组成.
所以while True的时候, 每次循环都要检查True的值, 对应指令LOAD_NAME.
这就是为什么while True比while 1慢了.
飘逸的python - 使用dis模块进行代码层次的性能剖析
原文地址:http://blog.csdn.net/handsomekang/article/details/41479597