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