diff --git a/test/micro/org/openjdk/bench/java/io/FileOpen.java b/test/micro/org/openjdk/bench/java/io/FileOpen.java index 6e7d71261721d..b0c54ba4d3030 100644 --- a/test/micro/org/openjdk/bench/java/io/FileOpen.java +++ b/test/micro/org/openjdk/bench/java/io/FileOpen.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2020, 2021, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -28,23 +28,24 @@ import java.io.File; import java.io.IOException; import java.nio.file.Files; +import java.nio.file.Path; import java.util.concurrent.TimeUnit; /** * Tests the overheads of I/O API. */ @BenchmarkMode(Mode.AverageTime) -@OutputTimeUnit(TimeUnit.MICROSECONDS) +@OutputTimeUnit(TimeUnit.NANOSECONDS) @State(Scope.Thread) @Warmup(time=2, iterations=5) @Measurement(time=3, iterations=5) @Fork(value=2, jvmArgs="-Xmx1g") public class FileOpen { - public String normalFile = "/test/dir/file/name.txt"; - public String root = "/"; - public String trailingSlash = "/test/dir/file/name.txt/"; - public String notNormalizedFile = "/test/dir/file//name.txt"; + private String normalFile = "/test/dir/file/name.txt"; + private String root = "/"; + private String trailingSlash = "/test/dir/file/name.txt/"; + private String notNormalizedFile = "/test/dir/file//name.txt"; public File tmp; @@ -68,6 +69,11 @@ public File normalized() { return new File(normalFile); } + @Benchmark + public File root() { + return new File(root); + } + @Benchmark public File trailingSlash() { return new File(trailingSlash); @@ -85,4 +91,48 @@ public boolean booleanAttributes() { && tmp.isDirectory() && tmp.isFile(); } + + /** + * Examine overheads of converting Files to Paths + */ + @BenchmarkMode(Mode.AverageTime) + @OutputTimeUnit(TimeUnit.NANOSECONDS) + @State(Scope.Thread) + @Warmup(time=2, iterations=5) + @Measurement(time=3, iterations=5) + @Fork(value=2, jvmArgs="-Xmx1g") + public static class ToPath { + private String normalFile = "/test/dir/file/name.txt"; + private String root = "/"; + private String trailingSlash = "/test/dir/file/name.txt/"; + private String notNormalizedFile = "/test/dir/file//name.txt"; + + @Benchmark + public void mix(Blackhole bh) { + bh.consume(new File(normalFile).toPath()); + bh.consume(new File(root).toPath()); + bh.consume(new File(trailingSlash).toPath()); + bh.consume(new File(notNormalizedFile).toPath()); + } + + @Benchmark + public Path normalized() { + return new File(normalFile).toPath(); + } + + @Benchmark + public File root() { + return new File(root); + } + + @Benchmark + public Path trailingSlash() { + return new File(trailingSlash).toPath(); + } + + @Benchmark + public Path notNormalized() { + return new File(notNormalizedFile).toPath(); + } + } } diff --git a/test/micro/org/openjdk/bench/java/io/FileToPath.java b/test/micro/org/openjdk/bench/java/io/FileToPath.java deleted file mode 100644 index d3a47e3684ff8..0000000000000 --- a/test/micro/org/openjdk/bench/java/io/FileToPath.java +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Copyright (c) 2020, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ -package org.openjdk.bench.java.io; - -import org.openjdk.jmh.annotations.*; -import org.openjdk.jmh.infra.Blackhole; - -import java.io.File; -import java.nio.file.Path; -import java.util.concurrent.TimeUnit; - -/** - * Tests the overheads of creating Paths from a File. - */ -@BenchmarkMode(Mode.AverageTime) -@OutputTimeUnit(TimeUnit.NANOSECONDS) -@State(Scope.Thread) -@Warmup(time=2, iterations=5) -@Measurement(time=3, iterations=5) -@Fork(value=3, jvmArgs="-Xmx1g") -public class FileToPath { - - public String normalFile = "/test/dir/file/name.txt"; - public String root = "/"; - public String trailingSlash = "/test/dir/file/name.txt/"; - public String notNormalizedFile = "/test/dir/file//name.txt"; - - - @Benchmark - public void mix(Blackhole bh) { - bh.consume(new File(normalFile).toPath()); - bh.consume(new File(trailingSlash).toPath()); - bh.consume(new File(root).toPath()); - bh.consume(new File(notNormalizedFile).toPath()); - } - - @Benchmark - public Path normalized() { - return new File(normalFile).toPath(); - } - - @Benchmark - public Path trailingSlash() { - return new File(trailingSlash).toPath(); - } - - @Benchmark - public Path notNormalized() { - return new File(notNormalizedFile).toPath(); - } - -}