Kat*_*ore 1 math flash performance actionscript-3
问题很简单; 我需要最快的方法来计算功率2.我需要这个计算2点之间距离的公式.
var Dist:int = Math.sqrt( (mmx - ox) * (mmx - ox) + (mmy - oy) * (mmy - oy) );
Run Code Online (Sandbox Code Playgroud)
任何的想法?
在最快的方式往往是一个查找表,只要你能限制你的输入值,以一个足够小的范围内,如用(伪代码):
int sqr_arr[] = {0, 1, 4, 9, 16, 25, 36, ...}
def sqr(n):
if n < 0:
return sqr(-n)
if n >= len(sqr_arr):
return n * n
return sqr_arr[n]
Run Code Online (Sandbox Code Playgroud)
这允许对较低值进行高速表查找,但如果尝试使用不在表中的参数,则还原为(可能)较慢的方法.
但是,正如Mitch Wheat在评论中指出的那样,当真正的瓶颈是平方根时,加速乘法将不会产生太大影响.
并记住:措施,不要猜!我认为自己相当擅长优化策略,但你应该像对待阴沟中的酒鬼一样谨慎对待所有建议(包括我的建议),告诉你如何过上漫长而成功的生活.