On Thu, 11 Sep 2025 09:58:19 GMT, David Beaumont <[email protected]> wrote:

>> src/java.base/share/classes/jdk/internal/jimage/ImageReader.java line 356:
>> 
>>> 354:             // Unlike findNode(), this method makes only one lookup in 
>>> the
>>> 355:             // underlying jimage, but can only reliably return 
>>> resource nodes.
>>> 356:             if (moduleName.contains("/") || 
>>> resourcePath.startsWith("/")) {
>> 
>> Slightly more efficient, here and in `containsResource` below:
>> Suggestion:
>> 
>>             if (moduleName.indexOf('/') >= 0 || resourcePath.indexOf('/') == 
>> 0) {
>
> I had thought of these micro optimizations, but I thought we preferred 
> clarity unless performance was proven to be an issue. I see 
> contains("&lt;single-char&gt;") in other code - should we be changing that?

I think replacing `startsWith(String)` with `indexOf(char)` is dubious, since 
the latter is O(n) and the former O(1) 

If you _really_ need to squeeze out everything on startup then `(x.length() > 0 
&& x.charAt(0) == '/')` is slightly faster in the interpreter (the difference 
more or less disappears after JIT compilation). I'd keep using 
`startsWith("/")`.

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

PR Review Comment: https://git.openjdk.org/jdk/pull/27203#discussion_r2340454223

Reply via email to