On Fri, 18 Dec 2020 13:39:48 GMT, Alan Bateman <al...@openjdk.org> wrote:

> Can you look in test/micro for existing examples?

Yes, of course, the question is more about the following: should I simply cover 
`UUID#nameUUIDFromBytes(byte[])` by the benchmark or should I rather write a 
comparison benchmark which would compare finding the MessageDigest on every 
iteration against using the holder for this purpose (without any direct 
reference to `UUID` class).

> It might be that the right place to cache is in `MessageDigest` rather than 
> `UUID` so that other code can benefit too.

`UUID.Md5Digest` may be moved to `MessageDigest` but this seems to be a case to 
implement something similar to this in the way similar to `StandardCharsets`.

> One other point is that Standard Algorithms specifies that MD5 is supported 
> by MessageDigest so the JDK would be broken it could not be found. If the 
> eventual patch is in UUID then this aspect will need a bit of cleanup.

I've looked through [Standard Algorithms section for 
MessageDigest](https://docs.oracle.com/en/java/javase/15/docs/specs/security/standard-names.html#messagedigest-algorithms)
 and is says

> Algorithm names that *can* be specified

And the javadoc of `MessageDigest` says:
> Every implementation of the Java platform is required to support the 
> following standard `MessageDigest` algorithms:
> - `SHA-1`
> - `SHA-256`

So I cannot find any requirement for `MD5` to be present. Although I believe 
that every implementation does provide it, it may be essential to either 
specify it or describe the behavior for its absence in case of `UUID`'s usage.

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

PR: https://git.openjdk.java.net/jdk/pull/1821

Reply via email to