Simplified timeit

C. Barnes connellybarnes at
Tue Jun 8 06:28:32 CEST 2004

I've been avoiding the timeit module because it seems
overly complicated.  I finally coded my own function
(named timeit :), which has the following benefits:

 1. Simple
 2. Figures out how many times to evaluate the
    callable passed to it.

Here's the code:

from time import clock

def timeit(f, time=0.5):
  """Calls f many times to determine the average time
to execute f.
     Usually accurate to within 3%."""
  count = 1
  while True:
    start = clock()
    for i in range(count): f()
    end = clock()
    T = end - start
    if T >= time: break
    count *= 2
  return T / count


from math import *

def f(x): return x * x - cos(x)
def g(): return f(1.0)

t = timeit(g)
print 'Time to execute f: ', t
print 'Calls to f per second: ', 1.0/t

PS: Try repeating this benchmark with psyco.  I get a
70x increase in speed.

Connelly Barnes

Do you Yahoo!?
Friends.  Fun.  Try the all-new Yahoo! Messenger. 

More information about the Python-list mailing list