【轉】python爲何在函數中執行速度快

轉自 stackoverflowpython

http://stackoverflow.com/questions/11241523/why-does-python-code-run-faster-in-a-function 數組

爲何一樣的代碼在函數中就要比不在函數中快?函數

def main():
    for i in xrange(10**8):
        pass
main()

real    0m1.841s
user    0m1.828s
sys     0m0.012scode

 

for i in xrange(10**8):
    pass

real    0m4.543s
user    0m4.524s
sys     0m0.012sget

 

緣由是這樣的:io

i在函數中是局部變量,使用STORE_FAST指令, i不在函數中爲全局變量使用STORE_NAME指令編譯

而 STORE_FAST要比STORE_NAME快。ast

可以使用 dis模塊查看字節碼:function

import dis

def a():
    pass

 
 dis.dis(a)
  2           0 LOAD_CONST               0 (None)
              3 RETURN_VALUE

 

 爲何 局部變量比全局變量快?class

局部變量編譯後被存爲固定大小的數組, 而全局變量是個字典。

相關文章
相關標籤/搜索