[Python-Dev] A wordcode-based Python

Cesare Di Mauro cesare.di.mauro at gmail.com
Wed Nov 4 14:30:01 CET 2009


Hi Mart

I had some problems and little time to dedicate to wpython in the last
period, but I restarted again with it in the last month.

Currently I'm working on changing and documenting the code so that almost
every optimization can be selected. So you'll compile it enabling only the
ones you are interested in.

I've also investigated about some ideas which Antoine told me on grouping
together FASTs and CONSTs in order to reduce bytecodes, but I've found that
the suggested solution brings some problems with the current function call
implementation that can hurt performance on some situations (mostly with
recursive ones, because usually they need to create new frames, and
constants references must be copied and INCREFed).
Since it will require huge changes to the current code base, I don't know if
it's worth the effort just to verify the idea. I'll think about it when the
project will be "finalized".

My plan is to finish the current work in a few days, and then remove the
(may be ugly) hacks that I made to the Python object model that were needed
to let tuples, lists and dictionaries be loaded as CONSTs.
May be a the end of the month it'll be fixed (and the diffs against CPython
will be reduced a lot, since a few files results changed).

Next, I need to changed the trace code (in frameobject.c) to let the
test_trace.py pass (at this time two tests are disabled because the VM
crashes).

Finally, I think to update the code base to 2.6.4.

I think to release everything at the end of the year, but if someone is
interested I can do a partial release at the end of November.

Regarding your tests, they are very interesting, particularly for regex_v8
that showed an unexpected result for me. I'll investigate about it after
I'll release wpython.

I you have any questions, I'm at your disposal (thanks for your tests!)

Cesare

2009/11/4 Mart Sõmermaa <mrts.pydev at gmail.com>

> On Tue, May 12, 2009 at 8:54 AM, Cesare Di Mauro
> <cesare.dimauro at a-tono.com> wrote:
> >> Also, I checked out wpython at head to run Unladen Swallow's
> >> benchmarks against it, but it refuses to compile with either gcc 4.0.1
> >> or 4.3.1 on Linux (fails in Python/ast.c). I can send you the build
> >> failures off-list, if you're interested.
> >>
> >> Thanks,
> >> Collin Winter
> >
> > I'm very interested, thanks. That's because I worked only on Windows
> > machines, so I definitely need to test and fix it to let it run on any
> other
> > platform.
> >
> > Cesare
>
> Re-animating an old discussion -- Cesare, any news on the wpython front?
>
> I did a checkout from http://wpython.googlecode.com/svn/trunk and
> was able to ./configure and make successfully on my 64-bit Linux box
> as well as to run the Unladen benchmarks.
>
> Given svn co http://svn.python.org/projects/python/tags/r261 in py261
> and svn co http://wpython.googlecode.com/svn/trunk in wpy,
>
> $ python unladen-tests/perf.py -rm --benchmarks=-2to3,all py261/python
> wpy/python
>
> gives the following results:
>
> Report on Linux foo 2.6.31-14-generic #48-Ubuntu SMP Fri Oct 16
> 14:05:01 UTC 2009 x86_64
> Total CPU cores: 2
>
> ai:
> Min: 0.640516 -> 0.586532: 9.20% faster
> Avg: 0.677346 -> 0.632785: 7.04% faster
> Significant (t=4.336740, a=0.95)
> Stddev: 0.05839 -> 0.08455: 30.94% larger
>
> Mem max: 7412.000 -> 6768.000: 9.52% smaller
> Usage over time: http://tinyurl.com/ykwhmcc
>
>
> call_simple:
> Min: 1.880816 -> 1.701622: 10.53% faster
> Avg: 1.944320 -> 1.778701: 9.31% faster
> Significant (t=14.323045, a=0.95)
> Stddev: 0.09885 -> 0.06000: 64.74% smaller
>
> Mem max: 8100.000 -> 6636.000: 22.06% smaller
> Usage over time: http://tinyurl.com/yzsswgp
>
>
> django:
> Min: 1.287158 -> 1.315700: 2.17% slower
> Avg: 1.330423 -> 1.366978: 2.67% slower
> Significant (t=-4.475769, a=0.95)
> Stddev: 0.05663 -> 0.05885: 3.78% larger
>
> Mem max: 15508.000 -> 16228.000: 4.44% larger
> Usage over time: http://tinyurl.com/yfpbmjn
>
>
> iterative_count:
> Min: 0.211620 -> 0.124646: 69.78% faster
> Avg: 0.222778 -> 0.159868: 39.35% faster
> Significant (t=9.291635, a=0.95)
> Stddev: 0.04239 -> 0.05279: 19.69% larger
>
> Mem max: 7388.000 -> 6680.000: 10.60% smaller
> Usage over time: http://tinyurl.com/yj7s8h4
>
>
> normal_startup:
> Min: 1.060017 -> 0.991366: 6.92% faster
> Avg: 1.189612 -> 1.170067: 1.67% faster
> Significant (t=2.002086, a=0.95)
> Stddev: 0.06942 -> 0.06864: 1.13% smaller
>
> Mem max: 3252.000 -> 4648.000: 30.03% larger
> Usage over time: http://tinyurl.com/ygo3bwt
>
>
> pickle:
> Min: 2.027566 -> 1.948784: 4.04% faster
> Avg: 2.051633 -> 2.043656: 0.39% faster
> Not significant
> Stddev: 0.03095 -> 0.07348: 57.88% larger
>
> Mem max: 8544.000 -> 7340.000: 16.40% smaller
> Usage over time: http://tinyurl.com/ykg9dn2
>
>
> pickle_dict:
> Min: 1.658693 -> 1.656844: 0.11% faster
> Avg: 1.689483 -> 1.698176: 0.51% slower
> Not significant
> Stddev: 0.16945 -> 0.09403: 80.20% smaller
>
> Mem max: 6716.000 -> 7636.000: 12.05% larger
> Usage over time: http://tinyurl.com/yjhyame
>
>
> pickle_list:
> Min: 0.919083 -> 0.894758: 2.72% faster
> Avg: 0.956513 -> 0.921314: 3.82% faster
> Significant (t=2.131237, a=0.95)
> Stddev: 0.12744 -> 0.10506: 21.31% smaller
>
> Mem max: 6804.000 -> 8792.000: 22.61% larger
> Usage over time: http://tinyurl.com/ylc3ezf
>
>
> pybench:
> Min: 58781 -> 50836: 15.63% faster
> Avg: 60009 -> 51788: 15.87% faster
>
> regex_compile:
> Min: 0.934131 -> 0.862323: 8.33% faster
> Avg: 0.962159 -> 0.884848: 8.74% faster
> Significant (t=13.587168, a=0.95)
> Stddev: 0.04685 -> 0.03229: 45.11% smaller
>
> Mem max: 12584.000 -> 12740.000: 1.22% larger
> Usage over time: http://tinyurl.com/yjngu8j
>
>
> regex_effbot:
> Min: 0.130686 -> 0.122483: 6.70% faster
> Avg: 0.143453 -> 0.138078: 3.89% faster
> Not significant
> Stddev: 0.01864 -> 0.03177: 41.32% larger
>
> Mem max: 7652.000 -> 6660.000: 14.89% smaller
> Usage over time: http://tinyurl.com/ykcgntf
>
>
> regex_v8:
> Min: 0.135130 -> 0.150092: 9.97% slower
> Avg: 0.138027 -> 0.177309: 22.15% slower
> Significant (t=-8.197595, a=0.95)
> Stddev: 0.00258 -> 0.04785: 94.60% larger
>
> Mem max: 11124.000 -> 12236.000: 9.09% larger
> Usage over time: http://tinyurl.com/ykb5vzu
>
>
> rietveld:
> Min: 0.848245 -> 0.816473: 3.89% faster
> Avg: 1.033925 -> 1.019889: 1.38% faster
> Not significant
> Stddev: 0.11242 -> 0.13006: 13.56% larger
>
> Mem max: 23792.000 -> 24548.000: 3.08% larger
> Usage over time: http://tinyurl.com/yhdvz5v
>
>
> slowpickle:
> Min: 0.876736 -> 0.800203: 9.56% faster
> Avg: 0.932808 -> 0.870577: 7.15% faster
> Significant (t=5.020426, a=0.95)
> Stddev: 0.05600 -> 0.11059: 49.36% larger
>
> Mem max: 7200.000 -> 7276.000: 1.04% larger
> Usage over time: http://tinyurl.com/ykt2brq
>
>
> slowspitfire:
> Min: 1.029100 -> 0.948458: 8.50% faster
> Avg: 1.062486 -> 1.020777: 4.09% faster
> Significant (t=4.581669, a=0.95)
> Stddev: 0.05441 -> 0.07298: 25.44% larger
>
> Mem max: 139792.000 -> 129264.000: 8.14% smaller
> Usage over time: http://tinyurl.com/yh7vmlh
>
>
> slowunpickle:
> Min: 0.411744 -> 0.356784: 15.40% faster
> Avg: 0.444638 -> 0.393261: 13.06% faster
> Significant (t=7.009269, a=0.95)
> Stddev: 0.04147 -> 0.06044: 31.38% larger
>
> Mem max: 7132.000 -> 7848.000: 9.12% larger
> Usage over time: http://tinyurl.com/yfwvz3g
>
>
> startup_nosite:
> Min: 0.664456 -> 0.598770: 10.97% faster
> Avg: 0.933034 -> 0.761228: 22.57% faster
> Significant (t=20.660776, a=0.95)
> Stddev: 0.09645 -> 0.06728: 43.37% smaller
>
> Mem max: 1940.000 -> 1940.000: -0.00% smaller
> Usage over time: http://tinyurl.com/yzzxcmd
>
>
> threaded_count:
> Min: 0.220059 -> 0.138708: 58.65% faster
> Avg: 0.232347 -> 0.156120: 48.83% faster
> Significant (t=23.804797, a=0.95)
> Stddev: 0.01889 -> 0.02586: 26.96% larger
>
> Mem max: 6460.000 -> 7664.000: 15.71% larger
> Usage over time: http://tinyurl.com/yzm3awu
>
>
> unpack_sequence:
> Min: 0.000129 -> 0.000120: 7.57% faster
> Avg: 0.000218 -> 0.000194: 12.14% faster
> Significant (t=3.946194, a=0.95)
> Stddev: 0.00139 -> 0.00128: 8.13% smaller
>
> Mem max: 18948.000 -> 19056.000: 0.57% larger
> Usage over time: http://tinyurl.com/yf8es3f
>
>
> unpickle:
> Min: 1.191468 -> 1.206198: 1.22% slower
> Avg: 1.248471 -> 1.281957: 2.61% slower
> Significant (t=-2.658526, a=0.95)
> Stddev: 0.05513 -> 0.11325: 51.32% larger
>
> Mem max: 7776.000 -> 8676.000: 10.37% larger
> Usage over time: http://tinyurl.com/yz96gw2
>
>
> unpickle_list:
> Min: 0.922200 -> 0.861167: 7.09% faster
> Avg: 0.955964 -> 0.976829: 2.14% slower
> Not significant
> Stddev: 0.04374 -> 0.21061: 79.23% larger
>
> Mem max: 6820.000 -> 8324.000: 18.07% larger
> Usage over time: http://tinyurl.com/yjbraxg
>
> ---
>
> The diff between the two trees is at
> http://dpaste.org/RpIv/
>
> Best,
> Mart Sõmermaa
> _______________________________________________
> Python-Dev mailing list
> Python-Dev at python.org
> http://mail.python.org/mailman/listinfo/python-dev
> Unsubscribe:
> http://mail.python.org/mailman/options/python-dev/cesare.di.mauro%40gmail.com
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-dev/attachments/20091104/314237d9/attachment-0001.htm>


More information about the Python-Dev mailing list