RFR: 8311207: Cleanup for Optimization for UUID.toString [v15]
温绍锦
duke at openjdk.org
Tue Sep 12 22:47:48 UTC 2023
On Tue, 12 Sep 2023 19:23:13 GMT, Roger Riggs <rriggs at openjdk.org> wrote:
>> 温绍锦 has updated the pull request with a new target base due to a merge or a rebase. The pull request now contains 19 commits:
>>
>> - merge from master
>> - Merge branch 'master' into optimization_for_uuid_to_string
>>
>> # Conflicts:
>> # src/java.base/share/classes/java/util/UUID.java
>> # src/java.base/share/classes/jdk/internal/util/HexDigits.java
>> - lo | hi => hi | lo
>> - add DIGITS description
>> - reversed how & hi
>> - Merge branch 'master' into optimization_for_uuid_to_string
>> - remove redundant parentheses
>> - fix java doc, big-endian -> little-endian
>> - Merge branch 'master' into optimization_for_uuid_to_string
>> - use ByteArrayLittleEndian
>> - ... and 9 more: https://git.openjdk.org/jdk/compare/e0845163...4f6ed3e6
>
> src/java.base/share/classes/jdk/internal/util/HexDigits.java line 112:
>
>> 110: | (DIGITS[b1 & 0xff] << 16)
>> 111: | (((long) DIGITS[b2 & 0xff]) << 32)
>> 112: | (((long) DIGITS[b3 & 0xff]) << 48);
>
> Can you reverse the order of these source lines to put the shifts of the higher order bits before the lower order bit shifts. `3333222211110000`. Its easier to understand where the bits end up in the long.
> The rest of the change is better focused.
if change packDigits order, performance will be slow, I don't know why yet.
The following is the data running on MacBookPro M1 Max :
make test TEST="micro:java.util.UUIDBench.toString"
Benchmark (size) Mode Cnt Score Error Units (current order)
UUIDBench.toString 20000 thrpt 15 96.396 ? 0.946 ops/us
Benchmark (size) Mode Cnt Score Error Units (change packDigits order)
UUIDBench.toString 20000 thrpt 15 86.496 ? 0.542 ops/us
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/14745#discussion_r1323682688
More information about the core-libs-dev
mailing list