作者softwind (software everywhere)
看板C_and_CPP
標題Re: [問題] 網路上亂看一些增加效率的小撇步
時間Wed Jul 6 02:19:56 2011
※ 引述《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
→ angleevil:3.感覺是撰寫程式的習慣,因為一般來講參數傳遞會犧牲一 07/06 08:24
→ angleevil:些速度.只是速度的問題還是再演算法吧!除非你程式處理 07/06 08:25
→ angleevil:1萬筆資料花個1秒,你老闆偏偏要你0.1秒.再看看這些問題 07/06 08:26
→ angleevil:會比較好.不過我學起來了,謝謝 07/06 08:27