Pyparsing performance boost using Python 2.6b1

dwahli at gmail.com dwahli at gmail.com
Fri Jun 20 07:13:03 EDT 2008


On Jun 19, 12:40 pm, Paul McGuire <pt... at austin.rr.com> wrote:
> I just ran my pyparsing unit tests with the latest Python 2.6b1
> (labeled internally as Python 2.6a3 - ???), and the current 1.5.0
> version of pyparsing runs with no warnings or regressions.
>
> I was pleasantly surprised by the improved performance.  The most
> complex parser I have is the Verilog parser, and I have just under 300
> sample input files, so the test gets a chance to run over a range of
> code and source inputs.  Here are the lines/second parsing for the
> Verilog data (higher numbers are better):
>
>  Python V2.5.1   Python V2.6b1
> base
>  209.2                307.0
>
> with packrat optimization enabled
>  349.8                408.0
>
> This is a huge percentage improvement, anywhere from 15-50%!  I do not
> know what it is about 2.6 that runs so much faster, but given that
> packratting achieves somewhat less improvement, I would guess that the
> 2.6 performance comes from some optimization in making function calls,
> or in GC of local variables when functions are completed (since
> packratting is a form of internal memoization of parse expressions,
> which thereby avoids duplicate calls to parsing functions).
>
> Using psyco typically gives another 30-50% performance improvement,
> but there is no psyco available for 2.6 yet, so I skipped those tests
> for now.
>
> -- Paul

Tests was made on Windows ?
Just try pybench on 2.6 and 2.5, and 2.6 is 17% better than 2.5 !
Very nice !

But I suspect the new compiler with Profile Guided Optimization (PGO)
to be the main cause of this nice boost...



More information about the Python-list mailing list