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

看板C_and_CPP作者 (software everywhere)時間14年前 (2011/07/06 02:20), 編輯推噓0(004)
留言4則, 1人參與, 最新討論串2/2 (看更多)
※ 引述《pracinverse (改)》之銘言: : 網路上看了一些增加程式效率的小技巧,很多有看沒有懂,知其然不知其所以然。 : 1. 有關function參數的順序,越常用的參數要放在越左邊 : 為什麼呢?和push到stack中的順序有關嗎?自己實驗了一下,速度上好像沒甚麼差別.. 用keyword "register" 建議compiler 可能比較有用... push parameters 不一定 由左至右, 也有可能由右往左推進stack 不一定相同 在 ARM compiler上 我看過一段說明是 如果pass parameter小於等於 4個, 他會全部使用 register來pass, 不會動到 mem push/pop. 這樣 似乎 有快一點 : 2. 在struct中的變數,把size大的變數放在前面 : 為什麼呢?可以減少記憶體的使用嗎? alignment... 由大到小 依據 "sizeof(X)" 的大小排 structure alignment問題 wiki就有 : 3. 把function要用到的變數從參數帶入,而不是讀取global的變數 : 為什麼呢?自己實驗了一下,速度好像不會因此增快... : 希望大家指點一下,謝謝 一般不是 直接access global var比較快嗎? 還少一次 push parameter 可能的情況是 global var 被其他task lock住 so 要等release lock 才能 access -- -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.166.120.177

07/06 08:24, , 1F
3.感覺是撰寫程式的習慣,因為一般來講參數傳遞會犧牲一
07/06 08:24, 1F

07/06 08:25, , 2F
些速度.只是速度的問題還是再演算法吧!除非你程式處理
07/06 08:25, 2F

07/06 08:26, , 3F
1萬筆資料花個1秒,你老闆偏偏要你0.1秒.再看看這些問題
07/06 08:26, 3F

07/06 08:27, , 4F
會比較好.不過我學起來了,謝謝
07/06 08:27, 4F
文章代碼(AID): #1E4rNG5i (C_and_CPP)
文章代碼(AID): #1E4rNG5i (C_and_CPP)