Profiling weirdness: Timer.timeit(), fibonacci and memoization
Rob Williscroft
rtw at freenet.co.uk
Sat Aug 2 17:14:11 EDT 2008
Stefaan Himpe wrote in news:2m3lk.118118$9I1.20910 at newsfe16.ams2 in
comp.lang.python:
> Nothing weird about this ...
> The difference will become larger as your input value becomes larger.
>
> You can easily understand why if you try to calculate fib(10) by hand,
> i.e. work through the algorithm with pencil and paper,
> then compare the work you have to do to the memoized version which just
> takes fib(9) and fib(8) from memory and adds them together.
>
I think you missed the point.
The problem is that the un-decorated, loop only version takes
35 seconds when called by timeit.Timer. However if you apply
the decorator it takes less that a second. In *both* cases
the function (fib) only gets called once.
Note, I timed the call fib(100) with time.clock() and got a
value of less than 1 ms, the memozed version takes about 10
times longer.
So the question is: whats going on with timeit.Timer ?
Rob.
--
http://www.victim-prime.dsl.pipex.com/
More information about the Python-list
mailing list