[問題] for迴圈在function內外的速度差別
#更2021/09/14
感謝各位大大的支援
詳細可以看sooge大的那篇文
for i in range()
如果是包在function裡
那個i 會使用 STORE_FAST
當執行到FOR_ITER時
會預測下一個指令為STORE_FAST
所以會直接peek到再下一個opcode
但 STORE_NAME 不會
包在function裡
STORE_FAST
https://i.imgur.com/yNTNuHN.jpg

如果沒包的話會是用 STORE_NAME
https://i.imgur.com/8ml1USm.jpg

圖中的TOS是 Top-of-stack
==============================
如題
我想知道在function內外執行速度上會不好有差異
func()是隨便寫的
然後for迴圈重複執行func()
一支程式是直接寫在外面執行
另一支是寫一個main() function去執行
直接在外面執行
https://i.imgur.com/wxDf04N.jpg

寫在main()去執行
https://i.imgur.com/RxNR7wP.jpg

執行後發現是寫在main()裡的執行的比較快
https://i.imgur.com/x9S8rez.jpg

我想請問為什麼會有這個速度上的差別
我猜測是因為range(10000000)
我有 print( id(10000000))
我發現那個1000000是有記憶體位置的
所以是因為那個10000000如果寫在main裡會是local變數
而local變數讀取比較快
是這樣嗎?
-----
Sent from JPTT on my iPhone
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 180.217.72.178 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Python/M.1631598489.A.874.html
推
09/14 14:59,
3年前
, 1F
09/14 14:59, 1F
→
09/14 15:12,
3年前
, 2F
09/14 15:12, 2F
→
09/14 15:12,
3年前
, 3F
09/14 15:12, 3F
推
09/14 15:53,
3年前
, 4F
09/14 15:53, 4F
→
09/14 15:53,
3年前
, 5F
09/14 15:53, 5F
推
09/14 17:15,
3年前
, 6F
09/14 17:15, 6F
推
09/14 18:09,
3年前
, 7F
09/14 18:09, 7F
→
09/14 18:09,
3年前
, 8F
09/14 18:09, 8F
推
09/14 18:15,
3年前
, 9F
09/14 18:15, 9F
→
09/14 18:16,
3年前
, 10F
09/14 18:16, 10F
推
09/14 18:28,
3年前
, 11F
09/14 18:28, 11F
推
09/14 18:52,
3年前
, 12F
09/14 18:52, 12F
推
09/14 18:55,
3年前
, 13F
09/14 18:55, 13F
※ 編輯: bamboopole (180.217.72.178 臺灣), 09/14/2021 21:46:13
Python 近期熱門文章
PTT數位生活區 即時熱門文章