我想对运行数万亿次的代码进行小的优化。哪种计算float64逆数的方法更快?
到目前为止,我所知道的计算逆的方法如下。
k = 3.788
result1 = k**-1
result2 = 1/k
我希望这个问题得到解答,但在Google上搜索 1分频或-1的幂(和类似措词)会返回0
结果。不夸张。
答案 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)