使用十进制类型增加了功耗计算的时间开销

2024-09-29 22:25:33 发布

您现在位置:Python中文网/ 问答频道 /正文

(我改成了)非常小的数字。在

经过这一转换,时间成本是相同的,但当我试图提高精度使用十进制。十进制将(2)转换为(3)时间成本爆炸式增长(约10倍)。在

有没有解决办法来减少时间和保持同样的精度?在

(1)

alpha = 1. (fyt *  qyt ) / (fxt * qxt)

(2)

^{pr2}$

(3)

alpha = 10**(Decimal(fyt).log10() + Decimal(qyt).log10() - Decimal(fxt).log10() - Decimal(qxt).log10())         

Tags: alpha时间精度数字成本decimalpr2解决办法
2条回答

有一个名为cDecimal的外部包,它是Decimal模块的C实现。我从来没用过,但可能想试试。在

我想说这是意料之中的,因为这里有一种10**x的幂计算,在十进制的情况下,这意味着在每一步之后检查精度。在

考虑下面的例子,很明显十进制幂运算非常昂贵:

In [6]: from decimal import Decimal

In [7]: %timeit 10**.0123456789
100000000 loops, best of 3: 16.6 ns per loop

In [8]: %timeit 10**Decimal(.0123456789)
10000 loops, best of 3: 95.3 µs per loop

因此,与其对(3)方程进行十进制运算,不如直接对第一个(1)进行运算:

^{pr2}$

这应该足够快,因为总共只有3个操作发生,并且应该具有相同的精度,因为我们使用的是Decimal。在

相关问题 更多 >

    热门问题