作者banyhong (=_=)
看板Soft_Job
標題Re: [請益] MTK 面試測驗請教
時間Thu Nov 19 23:37:18 2015
※ 引述《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://webptt.com/m.aspx?n=bbs/Soft_Job/M.1447947440.A.72E.html
1F:→ final01: 你為何會認為這是最快的?? 11/20 23:00
2F:→ banyhong: 因為是constant time 11/21 13:54