假設您獲得了一個要測試的3D點以及另外兩個代表立方體最大值和最小值的3D點。確定3D點是否在軸對齊的立方體內的最快方法?
顯而易見的解決方案使用,在最壞的情況,6條條件語句如下:
if (point.x < cubemin.x || point.y < cubemin.y || point.z < cubemin.z
|| point.x > cubemax.x || point.y > cubemax.y || point.z > cubemax.z)
return false; //is not within cube
return true; //is within cube
條件語句是一些最計算昂貴的指令來執行。是否有任何的方式來減少所需的檢查次數?這種情況下的性能至關重要。
「計算量很大」的部分是有一個分支的事實,而不是它有6個測試。我看不出如何減少測試的次數。 – ooga 2014-10-27 03:39:00
@ooga你是說每個測試都不等於新的分支,否則不需要額外的分支預測? – Slight 2014-10-27 03:54:19
你不告訴數據類型,這是必不可少的信息!你的內點或外點更頻繁嗎?你嘗試過使用按位還是|而不是邏輯或|| ? – 2014-10-27 09:23:03