看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《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