[Python-Dev] collections module

Kurt B. Kaiser kbk at shore.net
Wed Jan 14 15:04:15 EST 2004


Guido van Rossum <guido at python.org> writes:

>> before: 15773 pystones, 29.9 mPB
>> after:  12690 pystones, 31.4 mPB
>
> What's the mPB number?  If its the time to complete parrotbench, this
> is actually a slowdown, just as for pystone.
>
>> Switch back to CVS:
>> 
>> 19531, 19379, 19531, 19379, 19305, 19084 pystones, 31.4 mPB
>> 
>> Switch back to Tim's patch:
>> 
>> 15015, 15480, 14588 pystones
>> 
>> should not need, but:
>> make clean && make  (just make on previous, only listobject.c being recompiled)
>> 
>> Still patched: 
>> 13158, 14006, 13193; restart python; 15923, 16722, 16023
>> restart python; 12953, 13698, 12953, 13513
>> 
>> Well, pystones are all over the map on this box.  But the
>> improvement is there for punchit and the parrotbench benchmark is
>> solid across the change.
>
> Unclear.  Please clarify mPB.

milliParrotBenches/sec.   1000/(time to complete Parrotbench [sec])

In a few years we'll be spec'ing kPB  :-)

So the data so far is
29.9 mPB unpatched
31.4 mPB patched
31.4 mPB unpatched
This morning:
30.7, 30.4, 30.1, 32.1, 32.2, 31.9 mPB patched (using make time)

rm Objects/listobject.c && cvs up Objects/listobject.c
make clean && make

30.1, 30.2, 30.3, 32.1, 29.6, 29.9, 28.2 mPB unpatched

Average unpatched: 30.2 mPB 
Average patched: 31.3 mPB

So a 3 - 4% improvement, maybe.  Needs more data.

I reported the equivalent of 31.1 mPB on 2Jan04, which was the best
of several trials.  The 'best of 3' pystones at that time was 17182.

Pystone
-------
My impression is that Pystone isn't a good benchmark for this box
unless run many times over a long period with python restarts, perhaps
a cron at night.  It may be the 128kB cache, but the results are very
variable.

This morning, with patched listobject.c, it's 
15015, 15060, 14881; restart python; 16891, 17182, 17361
restart python; 14925, 14970, 14925, 14492, 14662, 14836, 15060, 15106, 15060
append sys.path and import a module: 13889, 13927, 14084
do some stuff, then: 14662, 14368, 14577
restart python; 14836, 14881, 14836
restart python; 15337, 15337, 15337, 15773, 15873, 15674, 15479, 15432, 14792

Following the switch back to unpatched mentioned above:
18182, 18050, 18248, 18450, 18248, 18181
restart python; 14881, 14970, 14705, 14836, 14749, 14970
restart python; 16835, 16835, 16778, 17064, 17182, 16892 
restart python; append sys.path, import module; 20000, 20408, 20080, 20808, 19763, 20000
do some stuff; 19305, 19762, 19607, 19084, 19455, 19455
restart python; 17605, 17731, 17482, 17544, 17544, 17483

On these two sets:

Average unpatched: 17865 pystones
Average patched: 15136 pystones

A 15% reduction with the patch.

This *may* be significant, but requires a lot more data here and
investigation by others.  On this box the pystone rating jumps between
python restarts.

I haven't calculated any more advanced statistics; IMHO with small
data sets, especially jumpy, ragged ones like these, you can often get
a better feel by just eyeballing it.  The downside being, you tend to
see what you want to see....
-- 
KBK



More information about the Python-Dev mailing list