哪个需要更少 cpu 个时钟周期来执行?毕达哥拉斯公式或 "if" 子句中整数之间的 16 次比较?
Which one takes less cpu clock cycles to execute? Pythagoras formula or 16 comparisons among ints in "if" clause?
大约答案就足够了。
我想检查 2 个相同大小的矩形是否重叠
1) 现有代码检查一个矩形的所有 (x,y) 是否在另一个矩形的所有 (x,y) 内。所以一共做了16次比较
2) 我的改进 - 计算每个矩形的左上角之间的距离,并检查这个距离是否小于矩形的对角线。
还有任何 book/material 讨论 CPU 时钟 cycles/time 编码中的每个操作需要在 CPU 上执行一次的数量。
这主要取决于您对平方根的近似值。正则近似肯定会更慢,这仅仅是因为它提供的准确性(以及迭代)。
鉴于您的矩形看起来很小,最快的算法是简单的查找:将所有可能的平方根保存在字典中,然后进行查找。
如果这不是您需要的,您可以搜索另一种算法(寻找平方根的近似值,或在内置算法中寻找平方根)。然后由您来计算必要的迭代次数和复杂度。
这是一个类似问题的 link,其中包含一些经验近似值:
https://gamedev.stackexchange.com/questions/27196/which-opcodes-are-faster-at-the-cpu-level
大约答案就足够了。 我想检查 2 个相同大小的矩形是否重叠 1) 现有代码检查一个矩形的所有 (x,y) 是否在另一个矩形的所有 (x,y) 内。所以一共做了16次比较 2) 我的改进 - 计算每个矩形的左上角之间的距离,并检查这个距离是否小于矩形的对角线。
还有任何 book/material 讨论 CPU 时钟 cycles/time 编码中的每个操作需要在 CPU 上执行一次的数量。
这主要取决于您对平方根的近似值。正则近似肯定会更慢,这仅仅是因为它提供的准确性(以及迭代)。
鉴于您的矩形看起来很小,最快的算法是简单的查找:将所有可能的平方根保存在字典中,然后进行查找。
如果这不是您需要的,您可以搜索另一种算法(寻找平方根的近似值,或在内置算法中寻找平方根)。然后由您来计算必要的迭代次数和复杂度。
这是一个类似问题的 link,其中包含一些经验近似值:
https://gamedev.stackexchange.com/questions/27196/which-opcodes-are-faster-at-the-cpu-level