看板 Soft_Job 關於我們 聯絡資訊
※ 引述《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
final01: 你為何會認為這是最快的?? 11/20 23:00
banyhong: 因為是constant time 11/21 13:54