RFR: 8061254: SPECjvm2008-XML performance regressions in 9-b33
Aleksey Shipilev
aleksey.shipilev at oracle.com
Wed May 13 12:03:03 UTC 2015
On 13.05.2015 14:51, Claes Redestad wrote:
> 9-b33 introduced a sustained regression in SPECjvm2008
> xml.transform on a number of our test setups.
>
> JDK-8058643 removed the check on value.length > 0, which
> means repeated calls to "".hashCode() now do a store of the
> calculated value (0) to the hash field. This has potential to
> cause excessive cache coherence traffic in xml.transform[1]
More details: it seems like xml.transform ends up using JDK APIs
(com.sun.org.apache.xml.internal.dtm.ref.ExpandedNameTable.getExpandedTypeID)
that "compute" the hashcode for "null" argument by calling
"".hashCode(), which is silly in itself.
Anyhow, dropping value.length > 0 check was my bad, and it is a yet
another manifestation of the empirical law in performance engineering:
https://twitter.com/shipilev/status/539119320081907713
> Adding back the check that value.length > 0 before entering the
> calculation loop recuperates the loss in both micro and
> xml.transform, but we're seeing as good or better number by
> simply guarding the store:
>
> Webrev: http://cr.openjdk.java.net/~redestad/8061254/webrev.00/
Good.
Thanks,
-Aleksey
More information about the core-libs-dev
mailing list