Integrated: 8314569: (fs) Improve normalization of UnixPath for input with trailing slashes
Sergey Tsypanov
stsypanov at openjdk.org
Tue Aug 29 08:42:20 UTC 2023
On Fri, 18 Aug 2023 09:25:25 GMT, Sergey Tsypanov <stsypanov at openjdk.org> wrote:
> Avoiding `String.substring()` call in `UnixPath.normalize()` can significantly reduce normalization costs for directories on Linux:
>
> @BenchmarkMode(Mode.AverageTime)
> @OutputTimeUnit(TimeUnit.NANOSECONDS)
> @Warmup(time = 2, iterations = 5)
> @Measurement(time = 2, iterations = 5)
> @Fork(value = 4, jvmArgs = "-Xmx1g")
> public class FileToPathBenchmark {
>
> @Benchmark
> public Path toDirectoryPath(Data data) {
> return FileSystems.getDefault().getPath(data.directoryPath);
> }
>
> @State(Scope.Thread)
> public static class Data {
> private String directoryPath = "/tmp/tmp/tmp/";
> }
> }
>
> Results:
>
> baseline
>
> Benchmark Mode Cnt Score Error Units
> FileToPathBenchmark.toDirectoryPath avgt 50 40.524 ± 0.940 ns/op
> FileToPathBenchmark.toDirectoryPath:·gc.alloc.rate avgt 50 3269.167 ± 101.018 MB/sec
> FileToPathBenchmark.toDirectoryPath:·gc.alloc.rate.norm avgt 50 175.213 ± 1.200 B/op
> FileToPathBenchmark.toDirectoryPath:·gc.churn.G1_Eden_Space avgt 50 3279.401 ± 104.252 MB/sec
> FileToPathBenchmark.toDirectoryPath:·gc.churn.G1_Eden_Space.norm avgt 50 175.756 ± 1.681 B/op
> FileToPathBenchmark.toDirectoryPath:·gc.churn.G1_Survivor_Space avgt 50 0.006 ± 0.001 MB/sec
> FileToPathBenchmark.toDirectoryPath:·gc.churn.G1_Survivor_Space.norm avgt 50 ≈ 10⁻³ B/op
> FileToPathBenchmark.toDirectoryPath:·gc.count avgt 50 1412.000 counts
> FileToPathBenchmark.toDirectoryPath:·gc.time avgt 50 4144.000 ms
>
> patched
>
> Benchmark Mode Cnt Score Error Units
> FileToPathBenchmark.toDirectoryPath avgt 50 33.134 ± 2.313 ns/op
> FileToPathBenchmark.toDirectoryPath:·gc.alloc.rate avgt 50 2652.997 ± 152.758 MB/sec
> FileToPathBenchmark.toDirectoryPath:·gc.alloc.rate.norm avgt 50 115.210 ± 1.960 B/op
> FileToPathBenchmark.toDirectoryPath:·gc.churn.G1_Eden_Space avgt 50 2654.258 ± 157.862 MB/sec
> FileToPathBenchmark.toDirectoryPath:·gc.churn.G1_Eden_Space.norm avgt 50 115.200 ± 1.960 B/op
> FileToPathBenchmark.toDirectoryPath:·gc.churn.G1_Survivor_Space avgt 50 0.007 ± 0.001 MB/sec
> FileToPathBenchmark.toDirec...
This pull request has now been integrated.
Changeset: 93188bd8
Author: Sergey Tsypanov <stsypanov at openjdk.org>
Committer: Alan Bateman <alanb at openjdk.org>
URL: https://git.openjdk.org/jdk/commit/93188bd80c755168c7e2cb946d7474fce014021e
Stats: 5 lines in 1 file changed: 1 ins; 1 del; 3 mod
8314569: (fs) Improve normalization of UnixPath for input with trailing slashes
Reviewed-by: alanb, bpb, rriggs
-------------
PR: https://git.openjdk.org/jdk/pull/15342
More information about the nio-dev
mailing list