求浮点逆数的最快方法是什么

时间:2019-02-18 22:48:58

标签: python optimization

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

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

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

我希望这个问题得到解答,但在Google上搜索 1分频或-1的幂(和类似措词)会返回0结果。不夸张。

1 个答案:

答案 0 :(得分:1)

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

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)