RFR: 8334015: Add Support for UUID Version 7 (UUIDv7) defined in RFC 9562 [v2]

kieran-farrell duke at openjdk.org
Tue May 20 13:37:51 UTC 2025


On Mon, 19 May 2025 18:17:09 GMT, Roger Riggs <rriggs at openjdk.org> wrote:

> Can the sub-microsecond value just be truncated and avoid the expensive divide operation?'

method 3 of secion 6.2 of https://www.rfc-editor.org/rfc/rfc9562.html#name-monotonicity-and-counters states 

> start with the portion of the timestamp expressed as a fraction of the clock's tick value (fraction of a millisecond for UUIDv7). Compute the count of possible values that can be represented in the available bit space, 4096 for the UUIDv7 rand_a field. Using floating point or scaled integer arithmetic, multiply this fraction of a millisecond value by 4096 and round down (toward zero) to an integer result to arrive at a number between 0 and the maximum allowed for the indicated bits, which sorts monotonically based on time. '

so i think we might have to keep the division? though i re-shuffled the equation to 

`int nsBits = (int) ((nsTime % 1_000_000) / 1_000_000.0 * 4096);`

which gives scaled integer division rather than floating point and gave a very slight imporved perfomance to 143.758 ± 2.135  ns/op

-------------

PR Review Comment: https://git.openjdk.org/jdk/pull/25303#discussion_r2097994819


More information about the core-libs-dev mailing list