[Tutor] timeit at the command line
Dick Moores
rdm at rcblue.com
Tue Oct 3 14:31:39 CEST 2006
At 04:35 AM 10/3/2006, Kent Johnson wrote:
>Dick Moores wrote:
> > At 03:05 AM 10/3/2006, Kent Johnson wrote:
> >> timeit runs the setup code once, then runs the timed code many times
> >> with the timer running. If "x=0" is outside the loop, then the while
> >> loop only runs once, because x == 100 after the first time through the
> >> loop. So your first version is effectively timing this:
> >>
> >> setup:
> >> x=100
> >>
> >> timed code:
> >> while x<100:
> >> x+=1
> >>
> >> which is of course a lot faster than actually running the loopp 100 times.
> >
> > Thanks, Kent. I was beginning to understand this, and now you've
> > nailed it down for me.
>
>You might want to look at the source, timeit.py. There is a code
>template (called 'template') near the beginning. Your setup and timed
>code are inserted into the template, then it is compiled and run.
Very interesting. I thought a line of that template looked familiar.
I was seeing "_t0 = _timer()" regularly when I had the -s option set
without any setup:
C:\>python -m timeit -r 3 -s"for x in range(10000):" " x*x"
Traceback (most recent call last):
File "E:\Python25\lib\runpy.py", line 95, in run_module
filename, loader, alter_sys)
File "E:\Python25\lib\runpy.py", line 52, in _run_module_co
mod_name, mod_fname, mod_loader)
File "E:\Python25\lib\runpy.py", line 32, in _run_code
exec code in run_globals
File "E:\Python25\lib\timeit.py", line 285, in <module>
sys.exit(main())
File "E:\Python25\lib\timeit.py", line 249, in main
t = Timer(stmt, setup, timer)
File "E:\Python25\lib\timeit.py", line 116, in __init__
code = compile(src, dummy_src_name, "exec")
File "<timeit-src>", line 4
_t0 = _timer()
^
But I don't understand what the error has to do with _t0 . That's OK,
don't bother to explain. I don't understand classes yet anyway.
Should get into them soon, with Wes Chun's book.
>One of the dangers of timeit is that you may time something different
>than what you think you are timing, as you did. It's an easy mistake to
>make and hard to protect against.
Yes. thanks, Kent.
Dick
>Kent
>
>_______________________________________________
>Tutor maillist - Tutor at python.org
>http://mail.python.org/mailman/listinfo/tutor
More information about the Tutor
mailing list