time.clock() problem under linux (precision=0.01s)

Szabolcs Nagy nszabolcs at gmail.com
Thu Aug 18 07:07:18 EDT 2005


I have to measure the time of a while loop, but with time.clock i
always get 0.0s, although python manual sais:
"this is the function to use for benchmarking Python or timing
algorithms"

So i tested timer functions capabilities with a short script:

import time
import os

def test_timer_func(func):
    print 'min time-time: %.10f'%min(abs(func()-func()) for i in
xrange(10**5))
    print 'max time-time: %.10f'%max(abs(func()-func()) for i in
xrange(10**5))

    dt = 0.0
    loopcount = 0
    t = func()

    while dt==0.0:
        dt = func() - t
        loopcount += 1

    print "min measurable loop time : %.10f"%dt
    print 'loopcount while dt==0 :',loopcount


print '\n time.clock()'
test_timer_func(time.clock)

print '\n time.time()'
test_timer_func(time.time)

print '\n os.times()'
ot = os.times
test_timer_func(lambda:ot()[4])


My output is:

 time.clock()
min time-time: 0.0000000000
max time-time: 0.0100000000
min measurable loop time : 0.0100000000
loopcount while dt==0 : 2703

 time.time()
min time-time: 0.0000019073
max time-time: 0.0000460148
min measurable loop time : 0.0000050068
loopcount while dt==0 : 1

 os.times()
min time-time: 0.0000000000
max time-time: 0.0100000007
min measurable loop time : 0.0099999998
loopcount while dt==0 : 2515


So the precision of time.clock is 0.01s under my ubuntu linux system,
which means it's not suitable for benchmarking. (i want to benchmark
the fps in my pygame+pyode program and it needs at least 0.001s
precision)

time.time seems much better solution, but python manual sais: "not all
systems provide time with a better precision than 1 second"

Should i use time.clock or time.time to be more crossplatform?
Is time.time ok for windows? (time()-time() != 0.0)

nszabolcs




More information about the Python-list mailing list