交换变量值

2018-08-06  本文已影响8人  好小葱1
import dis
import timeit

def swap1():
    x = 5 
    y=6
    x, y = y, x

def swap2():
    x = 5 
    y = 6
    tmp = x
    x = y
    y = tmp

if __name__ == '__main__':
    print dis.dis(swap1)
    print dis.dis(swap2)
image.png

swap1中通过ROT_TWO交换栈顶的两个元素实现xy值的互换,swap2中引入了tmp变量,多了一次LOAD_FAST, STORE_FAST的操作。执行一个ROT_TWO指令比执行一个LOAD_FAST+STORE_FAST的指令快,这也是为什么swap1swap2性能更好的原因。

上一篇 下一篇

猜你喜欢

热点阅读