[發案] 優化C語言函數,以Assemble用inline方式(arm平台)

看板CodeJob作者 (lasfd)時間13年前 (2011/07/05 16:15), 編輯推噓1(103)
留言4則, 3人參與, 最新討論串1/1
凡是「*[30m」開始的行,都請使用 Ctrl + y 刪除。 請注意:發案人須主動更改標題[]內與內文之案件狀態(發案,成案,結案), 案件狀態、發案人、聯絡方式1、有效時間、專案說明為必填項目, 如果對於發案文章格式有不清楚的地方,請參考置底文章:[發案] 發案範例 案件狀態:發包中  發案人:本人 聯絡方式1:先以站內信溝通 聯絡方式2: 有效時間:七月底 專案說明: 這是一個在Android下開發的系統,其中有一部分是用NDK寫的Codec, 但是目前採用的codec演算法是用C寫的,考慮到效率問題所以必須要 對演算法優化,因為硬體是ARM的,所以希望徵求懂得ARM的高手,將某 些C函數以inline的組合語言(assembly)方式改寫以期增加效率,總共 約有4~6個函數要修改每個函數長度不會超過10行 例如以下的範例 Word32 L_add(Word32 L_var1, Word32 L_var2) { Word32 L_var_out; L_var_out = L_var1 + L_var2; if (((L_var1 ^ L_var2) & MIN_32) == 0) { if ((L_var_out ^ L_var1) & MIN_32) { L_var_out = (L_var1 < 0) ? MIN_32 : MAX_32; Overflow = 1; } } return(L_var_out); }   預算:來信議價,好商量 接案者要求:可以完成即可,台北縣市為佳 接受新手承案否:是/否   附註:     (以下內容鼓勵結案後填寫,可以詢問接案人願不願意暴光接案身份) 結案意見:  接案人: 評價(0-10):   說明: -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.137.138.176

07/05 16:16, , 1F
你怎麼衡量有優化?
07/05 16:16, 1F

07/05 16:25, , 2F
可以比較此C函數編譯後和用組語組譯後的指令數
07/05 16:25, 2F

07/05 16:26, , 3F
或是讓此函數跑個數萬次比較雙方的時間差異
07/05 16:26, 3F

07/08 18:50, , 4F
指令少cycle多還是時間多,還是用時間差比較好
07/08 18:50, 4F
文章代碼(AID): #1E4iWFL8 (CodeJob)