Iteration style

Michael Hoffman m.h.3.9.1.without.dots.at.cam.ac.uk at example.com
Thu Sep 23 13:18:35 CEST 2004


Abdullah Khaidar wrote:

> Is there any iteration style we must use to get faster processing
> time?

Yes, definitely this one:

>>>>def useJoin():
> 
> 	list = [str(element) for element in range(5)]
> 	return "".join(list)

You aren't going to get the right results from your getTimer() function 
because you are just timing putting the function object on the stack, 
rather than actually calling it.

>>>>def getTimer():
> 
> 	from timeit import Timer
> 	t1 = Timer("useListIteration", "from __main__ import
> useListIteration")

should be t1 = Timer("useListIteration()", "from __main__ import 
useListIteration")

> 	print "Using list iteration: ", min(t1.repeat())

Of course now that you are actually calling a function, it should take a 
lot longer, so repeating it 3 * 1,000,000 times is way too many. I would 
change the number of integers you are concatenating from 5 to 1000 and 
run Timer.timeit(number=100) (repeats 3 * 100 times) instead.

 >>> getTimer()
Using list iteration:  0.751999855042
Using normal iteration:  0.766999959946
Using join:  0.446000099182

HTH,
--
Michael Hoffman



More information about the Python-list mailing list