×

# An experiment

Hello, I just thought of comparing the speeds of two methods to double a number in python but didn't got a precise result. Can anyone help me improving this testing?

Here's the program:

  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 import time,random mainscores=[[],[]] for digits in range(15): print('Calculations with %s digit numbers are going on...' %(digits+1)) scoreplus=0 scoremultiply=0 for m in range(100): timebyaplusa=0 timebyatimestwo=0 while timebyaplusa==timebyatimestwo: a=random.randint((10**digits),(10**(digits+1))-1) starttime=time.time() b1=a+a timebyaplusa+=time.time()-starttime starttime=time.time() b2=a*2 timebyatimestwo+=time.time()-starttime if b1!=b2: print('Error') if timebyaplusa>timebyatimestwo: scoremultiply+=1 else: scoreplus+=1 mainscores[0].append(scoreplus) mainscores[1].append(scoremultiply) 

...and here's the output:

Will it even show any difference?

Note by Pranjal Jain
1 year, 9 months ago

Sort by:

Don't know anything about Python, but my guess is that only 1 trial per an $$n$$ digit number won't tell you much, since both methods have comparable times and the random factors obfuscate any differences in the short term.

If you want to see a difference, try more trials (1000?) and average them out instead of just one trial. · 1 year, 9 months ago

Good idea! Let me try that out. · 1 year, 9 months ago

Well, for 10k calculations, for $$n$$ digit numbers, $$n\in \{1,2,3,\cdots,20\}$$, the results were as follows:

while with 1m calculations, the results were:

Seems like '+' wins in case of bigger numbers. · 1 year, 9 months ago