There has been a marked decrease in performance on optimized builds
for some uses of Parrot since the merge of the generational_gc branch.
These stem from f14c1a62 ("Temporary workaround to enable write
barriering of CallContexts"). In brief, optimized access to registers
has been disabled.2 cases that show the slowdown are Parrot's examples/pir/md5sum.pir and Winxed's examples/hexdump.winxed. In the following, benchmarks are heated up by running them several times before timing them. $ du -h /usr/lib/libc.a 4.2M /usr/lib/libc.a $ cd $PARROT_ROOT # heat up benchmark (10x) $ time ./parrot examples/pir/md5sum.pir /usr/lib/libc.a > /dev/null # updated to HEAD (77b57cc51341), optimized build ./parrot examples/pir/md5sum.pir /usr/lib/libc.a > /dev/null 7.58s user 0.04s system 99% cpu 7.624 total # heat up benchmark (10x) $ time ~/parrot-master/bin/parrot examples/pir/md5sum.pir /usr/lib/libc.a > /dev/null# built prior to gen_gc merge (d5a6bc669) ~/parrot-master/bin/parrot examples/pir/md5sum.pir /usr/lib/libc.a > /dev/nul 3.21s user 0.06s system 98% cpu 3.301 total $ cd $WINXED_ROOT # heat up benchmark (5x) $ time ./winxed examples/hexdump.winxed /usr/lib/libc.a > /dev/null # built against old parrot ./winxed examples/hexdump.winxed /usr/lib/libc.a > /dev/null 63.10s user 8.54s system 99% cpu 1:11.87 total $ export LD_PRELOAD=~/dev/parrot/core/blib/lib/libparrot.so # force use of new parrot # heat up benchmark (5x) $ time ./winxed examples/hexdump.winxed /usr/lib/libc.a > /dev/null ./winxed examples/hexdump.winxed /usr/lib/libc.a > /dev/null 185.60s user 8.79s system 99% cpu 3:16.33 total I also ran callgrind for the md5 example. Performance is dominated by op bodies. _______________________________________________ http://lists.parrot.org/mailman/listinfo/parrot-dev
