On Wed, 21 May 2025 14:10:31 GMT, Kieran Farrell <[email protected]> wrote:

>>> if so, I've tried out some variations, i found creating the 64 bit lsb with 
>>> ng.nextLong() brings a large pefomance decrease over using the nextBytes 
>>> method
>> 
>> Probably because `SecureRandom` gets `#nextLong()` from `Random`, which ends 
>> up calling `#next(int)` twice, so it allocates twice. Overriding 
>> `#nextLong()` in `SecureRandom` may help a little but will still have to 
>> allocate as long as `SecureRandomSpi` is not updated.
>
> The nsBytes were included to give some additional but not guaranteed 
> monotonicity in the event of msTime collisions on a single instance of a JVM. 
> I updated the method to print the msTime and nsBits for visual purposes seen 
> below. The nsBits increase until cycling back to a lower value on the last or 
> +/- 1 of the last instance of the same msTime value as tested on Linux and 
> MacOS . I'm not sure of the reason why the cycles are almost in sync given 
> that the times are not linked. However Marschall has pointed out that 
> nanoTime() resolution is weaker on windows so maybe its not something that 
> can be depended on. In that case I could revert to the random byte only 
> implementation and remove the nsBytes fro random data.
> 
> As for the nsBits computation, in order to align with the RFC, my 
> understanding was to get the remainder of nsTime (% 1_000_000) to get the 
> nanoseconds within the current millisecond, divide by 1_000_000 to convert to 
> a fraction of a ms and multiply by 4096L to scale to the integer range to fit 
> into the 12 bits permitted for the ns timestamp. 
> 
> 
> 
> 
> msTime: 1747835228108, nsBits: 1336
> msTime: 1747835228137, nsBits: 1333
> msTime: 1747835228137, nsBits: 1794
> msTime: 1747835228137, nsBits: 2206
> msTime: 1747835228137, nsBits: 2766
> msTime: 1747835228137, nsBits: 3040
> msTime: 1747835228137, nsBits: 3485
> msTime: 1747835228137, nsBits: 3901
> msTime: 1747835228138, nsBits: 239
> msTime: 1747835228138, nsBits: 651
> msTime: 1747835228138, nsBits: 918
> msTime: 1747835228138, nsBits: 1321
> msTime: 1747835228138, nsBits: 1729
> msTime: 1747835228138, nsBits: 2140
> msTime: 1747835228138, nsBits: 2535
> msTime: 1747835228138, nsBits: 2874
> msTime: 1747835228138, nsBits: 3243
> msTime: 1747835228138, nsBits: 3641
> msTime: 1747835228138, nsBits: 3967
> msTime: 1747835228139, nsBits: 227
> msTime: 1747835228139, nsBits: 524

This thread can be resolved.

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

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

Reply via email to