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

S

Szabolcs Nagy

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:eek:t()[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
 
D

Dennis Lee Bieber

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

PythonWin 2.3.5 (#62, Feb 9 2005, 16:17:08) [MSC v.1200 32 bit (Intel)]
on win32.
Portions Copyright 1994-2001 Mark Hammond ([email protected]) -
see 'Help/About PythonWin' for further copyright information.
 
M

Mike Meyer

Szabolcs Nagy said:
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)

You should use the timeit module, which chooses the correct timer to
use for the platform it's running on, as well as working around a
number of other things that trip up people trying to benchmark code.

<mike
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,755
Messages
2,569,537
Members
45,022
Latest member
MaybelleMa

Latest Threads

Top