Code with random module faster on the vm than the vm host...

Ned Batchelder ned at nedbatchelder.com
Sun Nov 10 20:15:48 EST 2013


On Friday, November 8, 2013 12:48:04 PM UTC-5, Pascal Bit wrote:
> Here's the code:
> 
> from random import random
> from time import clock
> 
> s = clock()
> 
> for i in (1, 2, 3, 6, 8):
>      M = 0
>      N = 10**i
> 
>      for n in xrange(N):
>          r = random()
>          if 0.5 < r < 0.6:
>              M += 1
> 
>      k = (N, float(M)/N)
> 
> print (clock()-s)
> 
> Running on win7 python 2.7 32 bit it uses around 30 seconds avg.
> Running on xubuntu, 32 bit, on vmware on windows 7: 20 seconds!
> The code runs faster on vm, than the computer itself...
> The python version in this case is 1.5 times faster...
> I don't understand.
> 
> What causes this?

The docs for time.clock() make clear that the meaning on Windows and Unix are different:

"On Unix, return the current processor time as a floating point number expressed in seconds."

"On Windows, this function returns wall-clock seconds elapsed since the first call to this function..."

Try the experiment again with time.time() instead.

--Ned.



More information about the Python-list mailing list