繁体   English   中英

获得浮点数倒数的最快方法是什么

[英]What's the fastest way to obtain inverse of a float

我想对运行数万亿次的代码做一个小的优化。 哪种方法计算 float64 的倒数更快?

到目前为止,我知道的计算逆的方法如下。

k = 3.788
result1 = k**-1
result2 = 1/k

我希望能回答这个问题,但在 google 上搜索更快的 1 除法或 -1 的幂(措辞类似)返回0结果。 毫不夸张。

在典型情况下,计算逆的最佳方法是

y = 1.0 / k

这避免了任何幂计算(比除法慢)和任何类型转换。 事实上,在我的机器上使用 IPython 我有

In [1]: k = 3.788

In [2]: %%timeit
   ...: result1 = k**-1
57.8 ns ± 0.295 ns per loop (mean ± std. dev. of 7 runs, 10000000 loops each)

In [3]: %%timeit
   ...: result2 = 1/k
32 ns ± 0.197 ns per loop (mean ± std. dev. of 7 runs, 10000000 loops each)

In [4]: %%timeit
   ...: result3 = 1.0/k
24.1 ns ± 0.177 ns per loop (mean ± std. dev. of 7 runs, 10000000 loops each)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM