8
我發現AGGREGATE Magic的技巧用於快速計算最大值。唯一的問題是這是整數,但我已經嘗試了一些東西,不知道如何爲無符號整數做一個版本。無符號整數的快速無分支最大值
inline int32_t max(int32_t a, int32_t b)
{
return a - ((a-b) & (a-b)>>31);
}
有什麼建議嗎?
編輯
不要使用這個,因爲其他人說,它產生不確定的行爲。對於任何現代體系結構,編譯器將能夠發出來自return (a > b) ? a : b
的無分支條件移動指令,這將比所討論的函數更快。
等待,你真的相信這是比快'返回> b? a:b'? –
這個功能幾乎沒用。使用'std :: max'。 –
是的,在現代CPU與管道,分支是緩慢的。我測量過,這個版本跟SSE版本一樣快,如果不是更快的話。 – plasmacel