有没有人知道在python中有更快的decimal实现?
如下面的示例所示,标准库的十进制模块比float
慢大约100倍。
from timeit import Timer
def run(val, the_class):
test = the_class(1)
for c in xrange(10000):
d = the_class(val)
d + test
d - test
d * test
d / test
d ** test
str(d)
abs(d)
if __name__ == "__main__":
a = Timer("run(123.345, float)", "from decimal_benchmark import run")
print "FLOAT", a.timeit(1)
a = Timer("run('123.345', Decimal)", "from decimal_benchmark import run; from decimal import Decimal")
print "DECIMAL", a.timeit(1)
输出:
FLOAT 0.040635041427
DECIMAL 3.39666790146
发布于 2011-11-19 16:47:42
你可以试试cdecimal
from cdecimal import Decimal
从Python3.3开始,cdecimal实现现在是decimal
标准库模块的内置实现,所以您不需要安装任何东西。只需使用decimal
即可。
对于Python2.7,安装cdecimal
并使用它而不是decimal
应该可以提供类似于Python3默认获得的加速。
发布于 2014-06-25 20:33:07
使用cDecimal。
将以下内容添加到您的基准测试:
a = Timer("run('123.345', Decimal)", "import sys; import cdecimal; sys.modules['decimal'] = cdecimal; from decimal_benchmark import run; from decimal import Decimal")
print "CDECIMAL", a.timeit(1)
我的结果是:
FLOAT 0.0257983528473
DECIMAL 2.45782495288
CDECIMAL 0.0687125069413
(Python 2.7.6/32、Win7/64、AMD Athlon II 2.1 AMD)
https://stackoverflow.com/questions/195116
复制相似问题