python 2.7.x上的大数学数学的长vs浮动速度

时间:2016-07-08 10:06:53

标签: python performance python-2.7

我有一些大整数,我知道他们可能大于sys.maxint肯定小于handleUpdateUsername(event) { console.log(this.state) event.persist() this.setState({ username: this.state.update('username', event.target.value) }) } 所以他们在里面decimal precision of floats。现在我想对它们进行大量简单的算术运算。所有操作结果也保证小于10**16

我注意到转换为10**16并执行操作比在float(在Windows x64上使用Python 2.7.12)上操作速度至少快20%。

我可以依赖此行为并将计算从long切换到long,还是这个性能提升取决于硬件/ python的实现?在这种情况下,还有其他方法可以提高性能吗?

我不关心任何小数点(如果是float我只是抛弃任何余数),但整数部分必须是精确的。

我的基准

a / b

longtest.py

n = 10 ** 10 nums = [x for x in xrange(2, 100000)] def testdiv(): for x in nums: n/x def testsum(): for x in nums: n+x def testmul(): for x in nums: n*x def testsub(): for x in nums: n-x

floattest.py

基准代码import math fl = math.floor n = 1.0 * 10 ** 10 nums = [x * 1.0 for x in xrange(2, 100000)] def testdiv(): for x in nums: fl(n/x) def testsum(): for x in nums: n+x def testmul(): for x in nums: n*x def testsub(): for x in nums: n-x

longvsfloat.py

结果:

import timeit

num = 100

print 'float testdiv:', timeit.timeit( 'floattest.testdiv()', setup = 'import floattest', number=num)
print 'long testdiv:', timeit.timeit( 'longtest.testdiv()', setup = 'import longtest', number=num) 

print 'float testsum:', timeit.timeit( 'floattest.testsum()', setup = 'import floattest', number=num)
print 'long testsum:', timeit.timeit( 'longtest.testsum()', setup = 'import longtest', number=num) 

print 'float testmul:', timeit.timeit( 'floattest.testmul()', setup = 'import floattest', number=num)
print 'long testmul:', timeit.timeit( 'longtest.testmul()', setup = 'import longtest', number=num) 

print 'float testsub:', timeit.timeit( 'floattest.testsub()', setup = 'import floattest', number=num)
print 'long testsub:', timeit.timeit( 'longtest.testsub()', setup = 'import longtest', number=num)  

0 个答案:

没有答案