RFR[S]:8241874 [PPC64] Improve performance of Long.reverseBytes() and Integer.reverseBytes() on Power9
Corey Ashford
cjashfor at linux.ibm.com
Thu Apr 2 23:07:31 UTC 2020
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