startswith( prefix[, start[, end]]) Query

rzed rzantow at gmail.com
Sat Sep 8 13:33:20 EDT 2007


Duncan Booth <duncan.booth at invalid.invalid> wrote in
news:Xns99A45CD3825D7duncanbooth at 127.0.0.1: 

I went through your example to get timings for my machine, and I 
ran into an issue I didn't expect.

My bat file did the following 10 times in a row:
(the command line wraps in this post)

call timeit -s "s='abracadabra1'*1000;t='abracadabra2';
    	startswith=s.startswith" startswith(t)
... giving me these times:

1000000 loops, best of 3: 0.483 usec per loop
1000000 loops, best of 3: 0.49 usec per loop
1000000 loops, best of 3: 0.489 usec per loop
1000000 loops, best of 3: 0.491 usec per loop
1000000 loops, best of 3: 0.488 usec per loop
1000000 loops, best of 3: 0.492 usec per loop
1000000 loops, best of 3: 0.49 usec per loop
1000000 loops, best of 3: 0.493 usec per loop
1000000 loops, best of 3: 0.486 usec per loop
1000000 loops, best of 3: 0.489 usec per loop

Then I thought that a shorter name for the lookup might affect the 
timings, so I changed the bat file, which now did the following 10 
times in a row:

timeit -s "s='abracadabra1'* 1000;t='abracadabra2';
 	sw=s.startswith" sw(t)

... giving me these times:
1000000 loops, best of 3: 0.516 usec per loop
1000000 loops, best of 3: 0.512 usec per loop
1000000 loops, best of 3: 0.514 usec per loop
1000000 loops, best of 3: 0.517 usec per loop
1000000 loops, best of 3: 0.515 usec per loop
1000000 loops, best of 3: 0.518 usec per loop
1000000 loops, best of 3: 0.523 usec per loop
1000000 loops, best of 3: 0.513 usec per loop
1000000 loops, best of 3: 0.514 usec per loop
1000000 loops, best of 3: 0.515 usec per loop

In other words, the shorter name did seem to affect the timings, 
but in a negative way. Why it would actually change at all is 
beyond me, but it is consistently this way on my machine. 

Can anyone explain this?

-- 
rzed



More information about the Python-list mailing list