我有一種情況,我可能可能需要應用乘數到一個值,以獲得正確的結果。這涉及使用浮點除法來計算值。浮點除法和檢查值的效率如果公式
我想這是一個好主意,在我對它們執行浮點邏輯以節省處理器時間之前檢查這些值,但是我不確定它在運行時的效率如何。
我假設if
檢查是1或2條指令(自從彙編類以來已經有一段時間了),並且浮點運算將比這更多。
//Check
if (a != 10) { //1 or 2 instructions?
b *= (float) a/10; //Many instructions?
}
價值a
將是「10」的大部分時間,但也有少數情況下,它不會是。即使a
等於除數,浮點除法將花費很多週期嗎?
以前的代碼與if
語句執行更有效率比沒有下一個更簡單?
//Don't check
b *= (float) a/10; //Many instructions?
就算有不會是任何noticable差異無論哪種方式,不過我很好奇,浮點乘法的行爲時,除數等於分紅的情況下,事情就變得處理器沉重。
您是否試過microbenchmarking兩個版本? – millimoose 2012-01-13 20:40:01
不,我還會更新我的問題 – styler1972 2012-01-13 20:43:01
是的,首先是基準,以確定它是否重要;如果沒有,做最簡單的事情。這就是說:分支小姐比分部更昂貴,所以除非分支具有高度可預測性,否則檢查不值得。 – comingstorm 2012-01-13 22:08:55