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

Michihiro Horie HORIE at jp.ibm.com
Tue Apr 21 13:21:32 UTC 2020


Hi Corey, Martin,

I confirmed the latest webrev fixes copyright year properly, so the change
looks ready to be pushed.

I will push the change my tomorrow.

Best regards,
Michihiro


 ----- Original message -----
 From: "Corey Ashford" <cjashfor at linux.ibm.com>
 To: "Doerr, Martin" <martin.doerr at sap.com>
 Cc: Michihiro Horie/Japan/IBM at IBMJP,
 "hotspot-compiler-dev at openjdk.java.net"
 <hotspot-compiler-dev at openjdk.java.net>,
 "ppc-aix-port-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
 Date: Tue, Apr 21, 2020 5:39 AM

 Hi Martin,

 Sorry for the delay on getting the copyright changes in (I work half
 time).  Here's the revised patch, with all copyright dates set to 2020:

 https://bugs.openjdk.java.net/browse/JDK-8241874
 http://cr.openjdk.java.net/~gromero/8241874/v2/

 Thanks for your consideration,

 - Corey

 On 4/16/20 1:08 AM, Doerr, Martin wrote:
 > 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