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

Reply via email to