Re: [請益] MTK 面試測驗請教

看板Soft_Job作者 (=_=)時間10年前 (2015/11/19 23:37), 編輯推噓0(002)
留言2則, 2人參與, 最新討論串14/14 (看更多)
※ 引述《brianhsu (墳墓)》之銘言: : ※ 引述《fanntone (我是胖子)》之銘言: : 很久沒寫 C 了,不確定是不是最快的方法…… : typedef void (*callback)(void); : int main(int argc, char ** args) { : int n = 1; : callback funcArray[6] = {NULL, func1, func2, func3, func4, func5}; : funcArray[n](); : } : 第二題在一定要用 if 的條件下,我還是覺得直接 : if (n == 33) { .... } else if (n == 67) { .... } 最快耶? : 因為一定要用 if,所以 if 指令 (JMP) 本身的 instruction cycle 可 : 以不計。 : 然後如果是用 == 的話,不是一個 CMP 的 CPU 指令就完事了嗎?相較之 : 下做其他運算不會更耗時嗎? 找一個數字使 33, 67, 324, 231, 687 Mod 都是相異值,例如: 33 mod 7 = 5 67 mod 7 = 4 324 mod 7 = 2 231 mod 7 = 0 687 mod 7 = 1 callback func[6] = {func4, func5, func3, 0, func2, func0}; func[n % 7](); -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 59.127.245.66 ※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1447947440.A.72E.html

11/20 23:00, , 1F
你為何會認為這是最快的??
11/20 23:00, 1F

11/21 13:54, , 2F
因為是constant time
11/21 13:54, 2F
文章代碼(AID): #1MJUomSk (Soft_Job)
討論串 (同標題文章)
文章代碼(AID): #1MJUomSk (Soft_Job)