[英]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.