RFR: 8259947: (fs) Optimize UnixPath.encode implementation [v2]

Alan Bateman alanb at openjdk.java.net
Tue Jan 19 12:13:51 UTC 2021


On Tue, 19 Jan 2021 12:02:13 GMT, Claes Redestad <redestad at openjdk.org> wrote:

>> This patch improves `UnixPath.encode` by reusing `JLA.getBytesNoRepl` (which has fast-paths for common encoding) and avoiding a `toCharArray` call on the input by refactoring the `normalizeNativePath` code to operate on `String`. This might have a cost on files on Mac that need additional native normalization.
>> 
>> This removes another `ThreadLocal` and a source of `SoftReference`s. Together with the UTF-8 fast-path my UTF-8 encoded file system see substantial speed-ups in a trivial `new File(str).toPath()` microbenchmark.
>
> Claes Redestad has updated the pull request incrementally with one additional commit since the last revision:
> 
>   Fold ToPath into FileOpen, add root benchmarks to keep mix comparable

src/java.base/unix/classes/sun/nio/fs/UnixPath.java line 112:

> 110:     private static final jdk.internal.access.JavaLangAccess JLA =
> 111:             jdk.internal.access.SharedSecrets.getJavaLangAccess();
> 112: 

Can you move this to the top, before the instance fields? Also let's import the jdk.internal.acces classes rather than using fully qualified names. That will keep it consistent with the existing code in this area.

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

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


More information about the core-libs-dev mailing list