Search code examples
pythonfunctiontimemeasure

python-measure function time


I am having a problem with measuring the time of a function.

My function is a "linear search":

def linear_search(obj, item,):
    for i in range(0, len(obj)):
        if obj[i] == item:
        return i
    return -1

And I made another function that measures the time 100 times and adds all the results to a list:

def measureTime(a):
    nl=[]
    import random
    import time
    for x in range(0,100): #calculating time
        start = time.time() 
        a   
        end =time.time()
        times=end-start
        nl.append(times)
    return nl

When I'm using measureTime(linear_search(list,random.choice(range(0,50)))), the function always returns [0.0].

What can cause this problem? Thanks.


Solution

  • Take a look at the following example, don't know exactly what you are trying to achieve so I guessed it ;)

    import random
    import time
    
    def measureTime(method, n, *args):
        start = time.time()
        for _ in xrange(n):
            method(*args)
        end = time.time()
        return (end - start) / n
    
    def linear_search(lst, item):
        for i, o in enumerate(lst):
            if o == item:
                return i
        return -1
    
    lst = [random.randint(0, 10**6) for _ in xrange(10**6)]
    repetitions = 100
    for _ in xrange(10):
        item = random.randint(0, 10**6)
        print 'average runtime =', 
        print measureTime(linear_search, repetitions, lst, item) * 1000, 'ms'