[問題] 網路上亂看一些增加效率的小撇步

看板C_and_CPP作者 (改)時間14年前 (2011/07/05 23:27), 編輯推噓0(008)
留言8則, 2人參與, 最新討論串1/2 (看更多)
網路上看了一些增加程式效率的小技巧,很多有看沒有懂,知其然不知其所以然。 1. 有關function參數的順序,越常用的參數要放在越左邊 為什麼呢?和push到stack中的順序有關嗎?自己實驗了一下,速度上好像沒甚麼差別.. 2. 在struct中的變數,把size大的變數放在前面 為什麼呢?可以減少記憶體的使用嗎? 3. 把function要用到的變數從參數帶入,而不是讀取global的變數 為什麼呢?自己實驗了一下,速度好像不會因此增快... 希望大家指點一下,謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.251.139.108

07/05 23:29, , 1F
我想看原網址,但我認為那文章所述大多compiler都會做.
07/05 23:29, 1F

07/05 23:33, , 2F
1.某些架構下前幾個參數是由 register 傳遞
07/05 23:33, 2F

07/05 23:34, , 3F
3.幫助 compiler 作 alias analysis, 有機率減少記憶體存取
07/05 23:34, 3F

07/05 23:35, , 4F
2. 不知道XD , 不過要 reorder arg 或 struct 的順序
07/05 23:35, 4F

07/05 23:35, , 5F
compiler 需要有足夠的資訊才有辦法做, 例如要分析出所有
07/05 23:35, 5F

07/05 23:36, , 6F
呼叫該函數的地方或所有使用該 struct 的地方
07/05 23:36, 6F

07/05 23:36, , 7F
理論上把 compiler 最佳化開起來它會自己處理
07/05 23:36, 7F

07/05 23:38, , 8F
不過實務上總是沒那麼美好就是了XD
07/05 23:38, 8F
文章代碼(AID): #1E4or6Mt (C_and_CPP)
文章代碼(AID): #1E4or6Mt (C_and_CPP)