On Wed, Nov 30, 2011 at 9:52 PM, Stephen Bannasch
<stephen.banna...@deanbrook.org> wrote:
> At 3:03 PM -0500 11/30/11, Stephen Bannasch wrote:
>>Benchmark code here: https://gist.github.com/1410423
>
> The hpricot benchmark is also slowed down consdierably.

I have found more issues in my invokedynamic binding logic and am in
the process of repairing them. I've pushed a couple changes to
master...can you re-test?

Here's updated REXML benchmark numbers.

*Parsing small document for 5 seconds          ... 3687 calls      (737.40/s)
Adding new elemnt for 5 seconds               ... 583686 calls    (116737.20/s)
Document creation for 5 seconds               ... 118806 calls    (23761.20/s)
Writing tree for 5 seconds                    ... 8299 calls      (1659.80/s)
By-hand search for 5 seconds                  ... 417629 calls    (83525.80/s)
XPath search for 5 seconds                    ... 1327 calls      (265.40/s)
*Parse large document for 5 seconds            ... 337 calls       (67.40/s)
Stream parsing for 5 seconds                  ... 590 calls       (118.00/s)
*Pull parsing for 5 seconds                    ... 534 calls       (106.80/s)
*SAX2 parsing for 5 seconds                    ... 170 calls       (34.00/s)
*Lightweight parsing for 5 seconds             ... 726 calls       (145.20/s)

The starred benchmarks are still slower than non-invokedynamic, but
the others are all faster...in some cases quite a bit faster. I'm
investigating the remaining anomalies...profiles don't look right,
especially on the initial "small" parse.

The five benchmarks at the bottom may be ok...they seem to vary wildly
regardless of invokedynamic, so they're probably at least on par.

I am *very* glad you brought this to my attention :) The logic I was
using to build a PIC and to completely invalidate call sites had a
critical flaw: if a PIC was built and one of those classes were
subsequently modified, the call site would get into a state where it
was repeatedly rebound each time those types were re-encountered. This
caused several heavily-hit call sites in the benchmark to rebind the
call site on nearly every invocation, which caused much of the
performance issues.

I am still seeing rebinding in profiles of some of the remaining slow
benchmarks, so I'm missing something.

- Charlie
_______________________________________________
mlvm-dev mailing list
mlvm-dev@openjdk.java.net
http://mail.openjdk.java.net/mailman/listinfo/mlvm-dev

Reply via email to