On Mon, 19 May 2025 20:17:43 GMT, Shaojin Wen <s...@openjdk.org> wrote:
>> Improve the performance of UUID::toString by using Long.expand and SWAR >> (SIMD within a register) instead of table lookup. Eliminating the table >> lookup can also avoid the performance degradation problem when the cache >> misses. > > Shaojin Wen has updated the pull request with a new target base due to a > merge or a rebase. The incremental webrev excludes the unrelated changes > brought in by the merge/rebase. The pull request contains 16 additional > commits since the last revision: > > - Merge remote-tracking branch 'upstream/master' into > optim_uuid_to_string_202501 > - simplify code > - Remove redundant comments > - use Long.expand > - Merge remote-tracking branch 'upstream/master' into > optim_uuid_to_string_202501 > - refactor > - from j3graham > - add comments > - use ByteArrayLittleEndian > - ues Long.expand > - ... and 6 more: https://git.openjdk.org/jdk/compare/f9f2be52...878a3cb7 The latest performance test numbers show that under AMD X64, the performance is improved by about 21%, and under MacBook M1 Pro, the performance is improved by about 7%. ## performance test scripts git remote add wenshao g...@github.com:wenshao/jdk.git git fetch wenshao # origin git checkout bd99525633e4d3d3f180a6678eedb8780dbb6139 make test TEST="micro:java.util.UUIDBench.toString" # current git checkout 878a3cb7c73b777eb5385b3e4d158c998cd9be46 make test TEST="micro:java.util.UUIDBench.toString" ## aliyun_ecs_c8a_x64 (CPU AMD EPYC™ Genoa) -# origin bd99525633e4d3d3f180a6678eedb8780dbb6139 -Benchmark (size) Mode Cnt Score Error Units -UUIDBench.toString 20000 thrpt 15 93.320 ± 0.359 ops/us +# current 878a3cb7c73b777eb5385b3e4d158c998cd9be46 +Benchmark (size) Mode Cnt Score Error Units +UUIDBench.toString 20000 thrpt 15 113.508 ± 1.372 ops/us +21.63% ## Apple MackBook M1 Pro -# origin bd99525633e4d3d3f180a6678eedb8780dbb6139 -Benchmark (size) Mode Cnt Score Error Units -UUIDBench.toString 20000 thrpt 15 106.199 ± 0.568 ops/us +# current 878a3cb7c73b777eb5385b3e4d158c998cd9be46 +Benchmark (size) Mode Cnt Score Error Units +UUIDBench.toString 20000 thrpt 15 113.911 ± 0.628 ops/us +7.34% ------------- PR Comment: https://git.openjdk.org/jdk/pull/22928#issuecomment-2892476915