作者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/cn.aspx?n=bbs/Soft_Job/M.1447947440.A.72E.html
1F:→ final01: 你为何会认为这是最快的?? 11/20 23:00
2F:→ banyhong: 因为是constant time 11/21 13:54