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?

importtime,randommainscores=[[],[]]fordigitsinrange(15):print('Calculations with %s digit numbers are going on...'%(digits+1))scoreplus=0scoremultiply=0forminrange(100):timebyaplusa=0timebyatimestwo=0whiletimebyaplusa==timebyatimestwo:a=random.randint((10**digits),(10**(digits+1))-1)starttime=time.time()b1=a+atimebyaplusa+=time.time()-starttimestarttime=time.time()b2=a*2timebyatimestwo+=time.time()-starttimeifb1!=b2:print('Error')iftimebyaplusa>timebyatimestwo:scoremultiply+=1else:scoreplus+=1mainscores[0].append(scoreplus)mainscores[1].append(scoremultiply)

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.

## Comments

Sort by:

TopNewestDon'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.

Log in to reply

Good idea! Let me try that out.

Log in to reply

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.

Log in to reply