RFR[S]:8241874 [PPC64] Improve performance of Long.reverseBytes() and Integer.reverseBytes() on Power9

Doerr, Martin martin.doerr at sap.com
Thu Apr 16 08:08:24 UTC 2020


Hi Corey,

please use 2020 for both, the Oracle and the SAP copyright.
Usually, both should be the same, but some people forget to update one of them.

Best regards,
Martin


> -----Original Message-----
> From: Corey Ashford <cjashfor at linux.ibm.com>
> Sent: Donnerstag, 16. April 2020 03:35
> To: Doerr, Martin <martin.doerr at sap.com>
> Cc: Michihiro Horie <HORIE at jp.ibm.com>; hotspot-compiler-
> dev at openjdk.java.net; ppc-aix-port-dev at openjdk.java.net
> Subject: Re: RFR[S]:8241874 [PPC64] Improve performance of
> Long.reverseBytes() and Integer.reverseBytes() on Power9
> 
> Hello Martin,
> 
> I'm having some trouble with my email server, so I'm having to reply to
> your earlier post, but I saw your most recent post on the mailing list
> archive.
> 
> Thanks for reviewing and testing this patch.  I went to look at the
> copyright dates, and see two date ranges: one for Oracle and its
> affiliates, and another for SAP.  In the files I looked at, the end date
> wasn't the same between the two.  Which one (or both) should I modify?
> 
> Thanks,
> 
> - Corey
> 
> On 4/14/20 6:26 AM, Doerr, Martin wrote:
> > Hi Corey,
> >
> > thanks for contributing it. Looks good to me. I’ll run it through our
> > testing and let you know about the results.
> >
> > Best regards,
> >
> > Martin
> >
> > *From:*ppc-aix-port-dev <ppc-aix-port-dev-bounces at openjdk.java.net>
> *On
> > Behalf Of *Michihiro Horie
> > *Sent:* Freitag, 10. April 2020 10:48
> > *To:* cjashfor at linux.ibm.com
> > *Cc:* hotspot-compiler-dev at openjdk.java.net;
> > ppc-aix-port-dev at openjdk.java.net
> > *Subject:* Re: RFR[S]:8241874 [PPC64] Improve performance of
> > Long.reverseBytes() and Integer.reverseBytes() on Power9
> >
> > Hi Corey,
> >
> > Thank you for sharing your benchmarks. I confirmed your change reduced
> > the elapsed time of the benchmarks by more than 30% on my P9 node.
> Also,
> > I checked JTREG results, which look no problem.
> >
> > BTW, I cannot find further points of improvement in your change.
> >
> > Best regards,
> > Michihiro
> >
> >
> > ----- Original message -----
> > From: "Corey Ashford" <cjashfor at linux.ibm.com
> > <mailto:cjashfor at linux.ibm.com>>
> > To: Michihiro Horie/Japan/IBM at IBMJP
> > Cc: hotspot-compiler-dev at openjdk.java.net
> > <mailto:hotspot-compiler-dev at openjdk.java.net>,
> > ppc-aix-port-dev at openjdk.java.net
> > <mailto:ppc-aix-port-dev at openjdk.java.net>, "Gustavo Romero"
> > <gromero at linux.vnet.ibm.com <mailto:gromero at linux.vnet.ibm.com>>
> > Subject: Re: RFR[S]:8241874 [PPC64] Improve performance of
> > Long.reverseBytes() and Integer.reverseBytes() on Power9
> > Date: Fri, Apr 3, 2020 8:07 AM
> >
> > On 4/2/20 7:27 AM, Michihiro Horie wrote:
> >> Hi Corey,
> >>
> >> I’m not a reviewer, but I can run your benchmark in my local P9 node if
> >> you share it.
> >>
> >> Best regards,
> >> Michihiro
> >
> > The tests are somewhat hokey; I added the shifts to keep the compiler
> > from hoisting the code that it could predetermine the result.
> >
> > Here's the one for Long.reverseBytes():
> >
> > import java.lang.*;
> >
> > class ReverseLong
> > {
> >       public static void main(String args[])
> >       {
> >           long reversed, re_reversed;
> > long accum = 0;
> > long orig = 0x1122334455667788L;
> > long start = System.currentTimeMillis();
> > for (int i = 0; i < 1_000_000_000; i++) {
> > // Try to keep java from figuring out stuff in advance
> > reversed = Long.reverseBytes(orig);
> > re_reversed = Long.reverseBytes(reversed);
> > if (re_reversed != orig) {
> >           System.out.println("Orig: " + String.format("%16x", orig) +
> > "  Re-reversed: " + String.format("%16x", re_reversed));
> > }
> > accum += orig;
> > orig = Long.rotateRight(orig, 3);
> > }
> > System.out.println("Elapsed time: " +
> > Long.toString(System.currentTimeMillis() - start));
> > System.out.println("accum: " + Long.toString(accum));
> >       }
> > }
> >
> >
> > And the one for Integer.reverseBytes():
> >
> > import java.lang.*;
> >
> > class ReverseInt
> > {
> >       public static void main(String args[])
> >       {
> >           int reversed, re_reversed;
> > int orig = 0x11223344;
> > int accum = 0;
> > long start = System.currentTimeMillis();
> > for (int i = 0; i < 1_000_000_000; i++) {
> > // Try to keep java from figuring out stuff in advance
> > reversed = Integer.reverseBytes(orig);
> > re_reversed = Integer.reverseBytes(reversed);
> > if (re_reversed != orig) {
> >           System.out.println("Orig: " + String.format("%08x", orig) +
> > "  Re-reversed: " + String.format("%08x", re_reversed));
> > }
> > accum += orig;
> > orig = Integer.rotateRight(orig, 3);
> > }
> > System.out.println("Elapsed time: " +
> > Long.toString(System.currentTimeMillis() - start));
> > System.out.println("accum: " + Integer.toString(accum));
> >       }
> > }
> >



More information about the hotspot-compiler-dev mailing list