list.clear() missing?!?

Serge Orlov Serge.Orlov at gmail.com
Wed Apr 12 03:33:29 EDT 2006


Felipe Almeida Lessa wrote:
> Em Qua, 2006-04-12 às 11:36 +1000, Steven D'Aprano escreveu:
> > On Tue, 11 Apr 2006 19:15:18 +0200, Martin v. Löwis wrote:
> >
> > > Felipe Almeida Lessa wrote:
> > >> I love benchmarks, so as I was testing the options, I saw something very
> > >> strange:
> > >>
> > >> $ python2.4 -mtimeit 'x = range(100000); '
> > >> 100 loops, best of 3: 6.7 msec per loop
> > >> $ python2.4 -mtimeit 'x = range(100000); del x[:]'
> > >> 100 loops, best of 3: 6.35 msec per loop
> > >> $ python2.4 -mtimeit 'x = range(100000); x[:] = []'
> > >> 100 loops, best of 3: 6.36 msec per loop
> > >> $ python2.4 -mtimeit 'x = range(100000); del x'
> > >> 100 loops, best of 3: 6.46 msec per loop
> > >>
> > >> Why the first benchmark is the slowest? I don't get it... could someone
> > >> test this, too?
> > >
> > > In the first benchmark, you need space for two lists: the old one and
> > > the new one;
> >
> > Er, what new list? I see only one list, x = range(100000), which is merely
> > created then nothing done to it. Have I missed something?
>
> He's talking about the garbage collector.

To be exact the reason for two array is timeit.py. It doesn't place the
code to time into a separate namespace but injects it into a for loop,
so the actual code timed is:
for _i in _it:
    x = range(100000)
and that makes two arrays with 100.000 items exist for a short time
starting from second iteration.




More information about the Python-list mailing list