假設我需要有一堆的if判斷,
if(){ if(){ if(){....... }}}}
大約8~20個判斷,
請問哪個執行速度會比較快呢?
1. 全部寫在主程式內
2.把判斷是抓出來 , 另設為一個函式,
待要用的時候再呼叫
小弟目前是以為1最快,
2的話只是讓程式碼好看一點而已
請大大幫忙解答....
感激不盡~~~
es_mato wrote:
xor and or...(恕刪)
讓小弟想起早期電腦系統資源苦哈哈年代,
所謂的程式最佳化。
許多 C/C++ 編譯器,當你下達針對速度最佳化的參數時,
其中一個動作就是,
它會「想辦法」把這些副函式「盡可能」展開到主程式之中(對,類似 1 的情況)
從低階的角度看,少了很多 push/pop、call/jmp 的動作
速度確實會有差別,只是你有 N 個迴圈就會被展開 N 次,
同樣程式碼反覆出現的結果,最明顯的代價就是程式體積會變大。
所謂的「盡可能」就是不是所有的函式都可以來這招,
特別是有一堆變數、結構與指標丟來丟去的狀況。
而副函式的好處除了維護方便之外,另一個好處就是,
如果你的函式寫得夠好,是可以直接被重複使用的,
一堆 .lib、.dll、.ocx....裡頭就是包好的函式。
現在的軟硬體老愛搞多線程,
大量用函式撰寫的程式碼,反而有利於編譯器(如果有支援的話)分析語法結構,
來進行最佳化。
有的編譯器可以將程式碼輸出成組合語言,
樓主不妨轉看看,順便計算一下每個動作的 clock 總和...



























































































