code optimization (calc PI) / Full Code of PI calc in Python and C.

Steven D'Aprano steve at REMOVEME.cybersource.com.au
Thu Jan 4 00:31:55 EST 2007


On Thu, 04 Jan 2007 02:10:44 +0100, Michael M. wrote:

> print "\nTiming a 1 million loop 'for loop' ..."
> start = time.clock()
> for x in range(1000000):
>    y = x  # do something

Why not "pass # do nothing"?


> end = time.clock()
> print "Time elapsed = ", end - start, "seconds"

Are you aware that you're timing the CREATION of a rather large list, as
well as the loop?

[snip code]

> #print "".join(pi)
> print pi
> 
> end_prg = time.clock()

and also the time taken for I/O printing the digits? That can be quite
slow.

For timing functions and small snippets of code, you should investigate
the timeit module. It is very flexible, and will often give more accurate
results than roll-you-own timing.

For example:

>>> import timeit
>>> t = timeit.Timer("for i in range(1000000): pass", "pass")
>>> t.timeit(100)  # time the loop one hundred times
29.367985010147095

Now compare it to the speed where you only create the list once.

>>> t = timeit.Timer("for i in L: pass", "L = range(1000000)")
>>> t.timeit(100)
16.155359983444214


-- 
Steven D'Aprano 




More information about the Python-list mailing list