Java - Math.pow()和Math.sqrt()的更快替代品

Mat*_*ins 8 java math function floating-accuracy pow

我的程序用来Math.pow()计算一个相对较大的双数到2的幂.后来我需要找到一个非常大的双数的平方根.问题是,我必须做超过100,000次,这需要很长时间.有没有可以加速这个过程的替代方案?谢谢

编辑:大数字我的意思是1000到10000(所以在计算方面可能不是那么大).就需要花费很长时间而言,功能需要大约30秒才能完成500次

Car*_*icz 9

"2的力量"正在变平.你最好通过将数字乘以它来做到这一点.

库版本sqrt可能比你在其他地方挖掘的任何东西都要快.如果您调用C例程,则只会增加跨语言调用的开销.但是你需要准确的平方根,还是表格查找近似值呢?值是否重复,即您是否经常需要计算相同数字的根?如果是这样,将a中的平方根缓存HashMap可能比计算它们更快.


Ole*_*ksi 8

您不太可能找到比Java Math更好(更快)的实现.您可能有更多的运气试图改变算法中的计算方式.例如,有什么方法可以避免找到一个庞大数字的平方根?

如果这不起作用,您可以尝试使用更适合快速数学计算的语言(如Matlab)来实现它.

否则,您可以尝试在其他区域进行优化.如果稍后有用,您可以尝试缓存过去的结果.

  • 如果您需要比较它们,那么如果您将距离保留为非平方根形式,则会得到相同的结果!注意,如果x <y,则sqrt(x)<sqrt(y),反之亦然.这可以真正加快你的计划! (2认同)