Unsafe.{get,put}-X-Unaligned performance
Peter Levart
peter.levart at gmail.com
Thu Mar 12 16:52:31 UTC 2015
On 03/11/2015 06:27 PM, Andrew Haley wrote:
> On 03/11/2015 07:10 AM, John Rose wrote:
>>> John: I'm waiting for an answer to my question here before I submit
>>> a webrev for approval.
>>>
>>> http://mail.openjdk.java.net/pipermail/panama-dev/2015-March/000099.html
>> (Answered.)
> http://cr.openjdk.java.net/~aph/unaligned.jdk.5/
> http://cr.openjdk.java.net/~aph/unaligned.hotspot.5/
>
> I hope everybody is happy with this, or at least not so unhappy that
> they would want to reject it altogether.
>
> There is no bug ID for this yet. John, would you like to create a bug
> database entry? If not, I'll do so. Then I can go for a RFR, which
> hopefully should be a shoo-in now that we've beaten this thing to
> death. :-)
>
> Andrew.
Hi Andrew,
Just an observation. In Heap-X-Buffer.java.template, you are using
self-sufficient form of methods for integral types:
377 public int getInt() {
378 return unsafe.getIntUnaligned(hb,
byteOffset(nextGetIndex(4)), bigEndian);
379 }
380
381 public int getInt(int i) {
382 return unsafe.getIntUnaligned(hb, byteOffset(checkIndex(i,
4)), bigEndian);
383 }
...but for floating point, you use:
479 public float getFloat() {
480 return getFloat(nextGetIndex(4));
481 }
482
483 public float getFloat(int i) {
484 int x = unsafe.getIntUnaligned(hb,
byteOffset(checkIndex(i, 4)), bigEndian);
485 return Float.intBitsToFloat(x);
486 }
...getFloat() is calling getFloat(int) which is a virtual method with 2
implementations. I think it would be better to in-line the the call and
eliminate the need to execute checkIndex()...
Regards, Peter
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openjdk.java.net/pipermail/hotspot-compiler-dev/attachments/20150312/ea8f264b/attachment.html>
More information about the hotspot-compiler-dev
mailing list