From 919752840ed2f7f69475b2187790865de16eee6b Mon Sep 17 00:00:00 2001 From: Antoine Brunner Date: Wed, 25 Sep 2019 15:58:07 +0200 Subject: [PATCH 01/21] Add new configuration for runtime benchmarks --- bench-run/src/main/scala/Benchmarks.scala | 110 ++++++++++++++++++++++ build.sbt | 1 + project/Build.scala | 1 + 3 files changed, 112 insertions(+) create mode 100644 bench-run/src/main/scala/Benchmarks.scala diff --git a/bench-run/src/main/scala/Benchmarks.scala b/bench-run/src/main/scala/Benchmarks.scala new file mode 100644 index 000000000000..d70a2ae80469 --- /dev/null +++ b/bench-run/src/main/scala/Benchmarks.scala @@ -0,0 +1,110 @@ +package dotty.tools.benchmarks + +import dotty.tools.dotc._ +import core.Contexts.Context +import dotty.tools.FatalError +import reporting._ + +import org.openjdk.jmh.results.RunResult +import org.openjdk.jmh.runner.Runner +import org.openjdk.jmh.runner.options.OptionsBuilder +import org.openjdk.jmh.annotations._ +import org.openjdk.jmh.results.format._ +import java.util.concurrent.TimeUnit + +import scala.runtime.DynamicTuple + +object Bench { + def main(args: Array[String]): Unit = { + val (intArgs, args1) = args.span(x => try { x.toInt; true } catch { case _: Throwable => false } ) + + val warmup = if (intArgs.length > 0) intArgs(0).toInt else 30 + val iterations = if (intArgs.length > 1) intArgs(1).toInt else 20 + val forks = if (intArgs.length > 2) intArgs(2).toInt else 1 + + val opts = new OptionsBuilder() + .shouldFailOnError(true) + .jvmArgs("-Xms2G", "-Xmx2G") + .mode(Mode.AverageTime) + .timeUnit(TimeUnit.NANOSECONDS) + .warmupIterations(warmup) + .measurementIterations(iterations) + .forks(forks) + .build + + val runner = new Runner(opts) // full access to all JMH features, you can also provide a custom output Format here + runner.run() // actually run the benchmarks + } +} + +@State(Scope.Thread) +class ConsConcatBenchmarks { + @Param(Array("10", "20")) + var size: Int = _ + var tuple: Tuple = _ + + @Setup + def setup(): Unit = { + tuple = () + + for (i <- 1 to size) + tuple = "string" *: tuple + } + + @Benchmark + def baseline(): Unit = {} + + // Cons benchmarks + @Benchmark + def tupleCons(): Tuple = { + "string" *: tuple + } + + @Benchmark + def dynamicTupleCons(): Tuple = { + DynamicTuple.dynamicCons("string", tuple) + } + + // Concat benchmarks + @Benchmark + def tupleConcat(): Tuple = { + tuple ++ tuple + } + + @Benchmark + def dynamicTupleConcat(): Tuple = { + DynamicTuple.dynamicConcat(tuple, tuple) + } + + // Interesting behaviour : I expect the two following to be the same because of TupleOptimizations.scala + @Benchmark + def tupleConcat2(): Tuple = { + ("string", "string") ++ ("string", "string") + } + + @Benchmark + def tupleNoConcat(): Tuple = { + ("string", "string", "string", "string") + } +} + +@State(Scope.Thread) +class ApplyBenchmarks { + val size: Int = 100 + + val tuple: NonEmptyTuple = { + var t = () + for (i <- 1 to size) + t = "string" *: t + t.asInstanceOf[NonEmptyTuple] + } + + @Param(Array("1", "10", "25", "50", "75", "99")) + var index: Int = _ + + // Apply benchmarks, doesn't work for some reason + // @Benchmark + // def tupleApply(): Unit = { + // DynamicTuple.dynamicApply(tuple, index) + // } +} diff --git a/build.sbt b/build.sbt index ce2d153fae34..54f8fe6bd63a 100644 --- a/build.sbt +++ b/build.sbt @@ -19,6 +19,7 @@ val `tasty-core-bootstrapped` = Build.`tasty-core-bootstrapped` val `tasty-core-scala2` = Build.`tasty-core-scala2` val `dotty-tastydoc` = Build.`dotty-tastydoc` val `dotty-tastydoc-input` = Build.`dotty-tastydoc-input` +val `dotty-bench-run` = Build.`dotty-bench-run` val `scala-library` = Build.`scala-library` val `scala-compiler` = Build.`scala-compiler` val `scala-reflect` = Build.`scala-reflect` diff --git a/project/Build.scala b/project/Build.scala index 8bfe90f11955..3f3f1f958450 100644 --- a/project/Build.scala +++ b/project/Build.scala @@ -1042,6 +1042,7 @@ object Build { lazy val `dotty-bench` = project.in(file("bench")).asDottyBench(NonBootstrapped) lazy val `dotty-bench-bootstrapped` = project.in(file("bench")).asDottyBench(Bootstrapped) + lazy val `dotty-bench-run` = project.in(file("bench-run")).asDottyBench(Bootstrapped) lazy val `dotty-tastydoc` = project.in(file("tastydoc")).asDottyTastydoc(Bootstrapped) lazy val `dotty-tastydoc-input` = project.in(file("tastydoc/input")).asDottyTastydocInput(Bootstrapped) From 013b93cfd9d25e41b7077d7b56b1d385c4611d70 Mon Sep 17 00:00:00 2001 From: Antoine Brunner Date: Sun, 29 Sep 2019 12:49:20 +0200 Subject: [PATCH 02/21] Add output file support and benchmark filtering --- bench-run/src/main/scala/Benchmarks.scala | 78 ++----------------- bench-run/src/main/scala/tuples/Tuples.scala | 79 ++++++++++++++++++++ 2 files changed, 85 insertions(+), 72 deletions(-) create mode 100644 bench-run/src/main/scala/tuples/Tuples.scala diff --git a/bench-run/src/main/scala/Benchmarks.scala b/bench-run/src/main/scala/Benchmarks.scala index d70a2ae80469..a8e47646eb63 100644 --- a/bench-run/src/main/scala/Benchmarks.scala +++ b/bench-run/src/main/scala/Benchmarks.scala @@ -22,6 +22,9 @@ object Bench { val iterations = if (intArgs.length > 1) intArgs(1).toInt else 20 val forks = if (intArgs.length > 2) intArgs(2).toInt else 1 + val benchmarks = if (args1.length > 0) args1(0) else ".*" + val outputFile = if (args1.length > 1) args1(1) else "output.csv" + val opts = new OptionsBuilder() .shouldFailOnError(true) .jvmArgs("-Xms2G", "-Xmx2G") @@ -30,81 +33,12 @@ object Bench { .warmupIterations(warmup) .measurementIterations(iterations) .forks(forks) + .include(benchmarks) + .resultFormat(ResultFormatType.CSV) + .result("results/" ++ outputFile) .build val runner = new Runner(opts) // full access to all JMH features, you can also provide a custom output Format here runner.run() // actually run the benchmarks } } - -@State(Scope.Thread) -class ConsConcatBenchmarks { - @Param(Array("10", "20")) - var size: Int = _ - var tuple: Tuple = _ - - @Setup - def setup(): Unit = { - tuple = () - - for (i <- 1 to size) - tuple = "string" *: tuple - } - - @Benchmark - def baseline(): Unit = {} - - // Cons benchmarks - @Benchmark - def tupleCons(): Tuple = { - "string" *: tuple - } - - @Benchmark - def dynamicTupleCons(): Tuple = { - DynamicTuple.dynamicCons("string", tuple) - } - - // Concat benchmarks - @Benchmark - def tupleConcat(): Tuple = { - tuple ++ tuple - } - - @Benchmark - def dynamicTupleConcat(): Tuple = { - DynamicTuple.dynamicConcat(tuple, tuple) - } - - // Interesting behaviour : I expect the two following to be the same because of TupleOptimizations.scala - @Benchmark - def tupleConcat2(): Tuple = { - ("string", "string") ++ ("string", "string") - } - - @Benchmark - def tupleNoConcat(): Tuple = { - ("string", "string", "string", "string") - } -} - -@State(Scope.Thread) -class ApplyBenchmarks { - val size: Int = 100 - - val tuple: NonEmptyTuple = { - var t = () - for (i <- 1 to size) - t = "string" *: t - t.asInstanceOf[NonEmptyTuple] - } - - @Param(Array("1", "10", "25", "50", "75", "99")) - var index: Int = _ - - // Apply benchmarks, doesn't work for some reason - // @Benchmark - // def tupleApply(): Unit = { - // DynamicTuple.dynamicApply(tuple, index) - // } -} diff --git a/bench-run/src/main/scala/tuples/Tuples.scala b/bench-run/src/main/scala/tuples/Tuples.scala new file mode 100644 index 000000000000..ba2d14e76041 --- /dev/null +++ b/bench-run/src/main/scala/tuples/Tuples.scala @@ -0,0 +1,79 @@ +package dotty.tools.benchmarks.tuples + +import org.openjdk.jmh.annotations._ +import scala.runtime.DynamicTuple + +@State(Scope.Thread) +class ConsConcatBenchmarks { + @Param(Array("10", "20")) + var size: Int = _ + var tuple: Tuple = _ + + @Setup + def setup(): Unit = { + tuple = () + + for (i <- 1 to size) + tuple = "string" *: tuple + } + + @Benchmark + def baseline(): Unit = {} + + // Cons benchmarks + @Benchmark + def tupleCons(): Tuple = { + "string" *: tuple + } + + @Benchmark + def dynamicTupleCons(): Tuple = { + DynamicTuple.dynamicCons("string", tuple) + } + + // Concat benchmarks + @Benchmark + def tupleConcat(): Tuple = { + tuple ++ tuple + } + + @Benchmark + def dynamicTupleConcat(): Tuple = { + DynamicTuple.dynamicConcat(tuple, tuple) + } + + // Interesting behaviour : I expect the two following to be the same because of TupleOptimizations.scala + @Benchmark + def tupleConcat2(): Tuple = { + ("string", "string") ++ ("string", "string") + } + + @Benchmark + def tupleNoConcat(): Tuple = { + ("string", "string", "string", "string") + } +} + +@State(Scope.Thread) +class ApplyBenchmarks { + val size: Int = 100 + + val tuple: NonEmptyTuple = { + var t: Tuple = () + for (i <- 1 to size) + t = "string" *: t + t.asInstanceOf[NonEmptyTuple] + } + + @Param(Array("1", "10", "25", "50", "75", "99")) + var index: Int = _ + + @Benchmark + def baseline(): Unit = {} + + // Apply benchmarks, doesn't work for some reason + // @Benchmark + // def tupleApply(): Unit = { + // DynamicTuple.dynamicApply(tuple, index) + // } +} From 62a0c280193b92ae16dd7c6f2631539a860858b7 Mon Sep 17 00:00:00 2001 From: Antoine Brunner Date: Sun, 29 Sep 2019 16:01:12 +0200 Subject: [PATCH 03/21] Add input facilities to benchmarks and start making serious benchmarks --- bench-run/inputs/concat.txt | 1 + bench-run/outputs/concat.csv | 0 .../scala/{Benchmarks.scala => Main.scala} | 30 ++++--- bench-run/src/main/scala/tuples/Apply.scala | 35 ++++++++ bench-run/src/main/scala/tuples/Concat.scala | 64 +++++++++++++++ bench-run/src/main/scala/tuples/Tuples.scala | 79 ------------------- bench/src/main/scala/Benchmarks.scala | 1 - 7 files changed, 118 insertions(+), 92 deletions(-) create mode 100644 bench-run/inputs/concat.txt create mode 100644 bench-run/outputs/concat.csv rename bench-run/src/main/scala/{Benchmarks.scala => Main.scala} (61%) create mode 100644 bench-run/src/main/scala/tuples/Apply.scala create mode 100644 bench-run/src/main/scala/tuples/Concat.scala delete mode 100644 bench-run/src/main/scala/tuples/Tuples.scala diff --git a/bench-run/inputs/concat.txt b/bench-run/inputs/concat.txt new file mode 100644 index 000000000000..7368b1fc8685 --- /dev/null +++ b/bench-run/inputs/concat.txt @@ -0,0 +1 @@ +sizes:0 0,0 5,0 10,0 15,0 20,0 25,0 30,5 0,5 5,5 10,5 15,5 20,5 25,5 30,10 0,10 5,10 10,10 15,10 20,10 25,10 30,15 0,15 5,15 10,15 15,15 20,15 25,15 30,20 0,20 5,20 10,20 15,20 20,20 25,20 30,25 0,25 5,25 10,25 15,25 20,25 25,25 30,30 0,30 5,30 10,30 15,30 20,30 25,30 30 \ No newline at end of file diff --git a/bench-run/outputs/concat.csv b/bench-run/outputs/concat.csv new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/bench-run/src/main/scala/Benchmarks.scala b/bench-run/src/main/scala/Main.scala similarity index 61% rename from bench-run/src/main/scala/Benchmarks.scala rename to bench-run/src/main/scala/Main.scala index a8e47646eb63..6a937d4faf2b 100644 --- a/bench-run/src/main/scala/Benchmarks.scala +++ b/bench-run/src/main/scala/Main.scala @@ -1,10 +1,5 @@ package dotty.tools.benchmarks -import dotty.tools.dotc._ -import core.Contexts.Context -import dotty.tools.FatalError -import reporting._ - import org.openjdk.jmh.results.RunResult import org.openjdk.jmh.runner.Runner import org.openjdk.jmh.runner.options.OptionsBuilder @@ -12,7 +7,7 @@ import org.openjdk.jmh.annotations._ import org.openjdk.jmh.results.format._ import java.util.concurrent.TimeUnit -import scala.runtime.DynamicTuple +import scala.io.Source object Bench { def main(args: Array[String]): Unit = { @@ -23,9 +18,9 @@ object Bench { val forks = if (intArgs.length > 2) intArgs(2).toInt else 1 val benchmarks = if (args1.length > 0) args1(0) else ".*" - val outputFile = if (args1.length > 1) args1(1) else "output.csv" + val outputFile = if (args1.length > 2) args1(2) else "output.csv" - val opts = new OptionsBuilder() + var builder = new OptionsBuilder() .shouldFailOnError(true) .jvmArgs("-Xms2G", "-Xmx2G") .mode(Mode.AverageTime) @@ -35,10 +30,21 @@ object Bench { .forks(forks) .include(benchmarks) .resultFormat(ResultFormatType.CSV) - .result("results/" ++ outputFile) - .build + .result(outputFile) + + if (args1.length > 1) { + for ((param, values) <- paramsFromFile(args1(1))) + builder = builder.param(param, values: _*) + } + + val runner = new Runner(builder.build) // full access to all JMH features, you can also provide a custom output Format here + runner.run // actually run the benchmarks + } - val runner = new Runner(opts) // full access to all JMH features, you can also provide a custom output Format here - runner.run() // actually run the benchmarks + def paramsFromFile(file: String): Array[(String, Array[String])] = { + Source.fromFile(file).getLines.toArray.map { l => + val Array(param, values) = l split ':' + (param, values split ',') + } } } diff --git a/bench-run/src/main/scala/tuples/Apply.scala b/bench-run/src/main/scala/tuples/Apply.scala new file mode 100644 index 000000000000..cdb9e261053e --- /dev/null +++ b/bench-run/src/main/scala/tuples/Apply.scala @@ -0,0 +1,35 @@ +package dotty.tools.benchmarks.tuples + +import org.openjdk.jmh.annotations._ +import scala.runtime.DynamicTuple + +@State(Scope.Thread) +class ApplyBenchmarks { + @Param(Array("1 0")) + var sizeAndIndex: String = _ + var tuple: NonEmptyTuple = _ + var index: Int = _ + + @Setup + def setup(): Unit = { + val size = sizeAndIndex.split(' ')(0).toInt + index = sizeAndIndex.split(' ')(1).toInt + tuple = "elem" *: () + + for (i <- 1 until size) + tuple = "string" *: tuple + } + + @Benchmark + def baseline(): Unit = {} + + @Benchmark + def normal(): Any = { + tuple(index) + } + + @Benchmark + def inlined(): Any = { + DynamicTuple.dynamicApply(tuple, index) + } +} diff --git a/bench-run/src/main/scala/tuples/Concat.scala b/bench-run/src/main/scala/tuples/Concat.scala new file mode 100644 index 000000000000..978c6abeff1a --- /dev/null +++ b/bench-run/src/main/scala/tuples/Concat.scala @@ -0,0 +1,64 @@ +package dotty.tools.benchmarks.tuples + +import org.openjdk.jmh.annotations._ +import org.openjdk.jmh.infra.Blackhole +import scala.runtime.DynamicTuple + +@State(Scope.Thread) +class Concat { + @Param(Array("0 0")) + var sizes: String = _ + var tuple1: Tuple = _ + var tuple2: Tuple = _ + var array1: Array[Object] = _ + var array2: Array[Object] = _ + + def tupleOfSize(n: Int): Tuple = { + var t: Tuple = () + for (i <- 1 to n) + t = "elem" *: t + t + } + + @Setup + def setup(): Unit = { + val size1 = sizes.split(' ')(0).toInt + val size2 = sizes.split(' ')(1).toInt + tuple1 = tupleOfSize(size1) + tuple1 = tupleOfSize(size2) + array1 = Array.fill(size1)("elem") + array2 = Array.fill(size2)("elem") + } + + @Benchmark + def baseline(): Unit = {} + + @Benchmark + def normal(): Tuple = { + tuple1 ++ tuple2 + } + + @Benchmark + def inlined(): Tuple = { + DynamicTuple.dynamicConcat(tuple1, tuple2) + } + + // This part is here to try and measure the overhead of tranforming tuples to arrays, then concatenating + // the array, and then transforming back to a tuple + @Benchmark + def toArray(bh: Blackhole): Unit = { + bh.consume(DynamicTuple.dynamicToArray(tuple1)) + bh.consume(DynamicTuple.dynamicToArray(tuple2)) + } + + @Benchmark + def arrayConcat(): Array[Object] = { + array1 ++ array2 + } + + @Benchmark + def fromArray(bh: Blackhole): Unit = { + bh.consume(DynamicTuple.dynamicFromArray[Tuple](array1)) + bh.consume(DynamicTuple.dynamicFromArray[Tuple](array2)) + } +} diff --git a/bench-run/src/main/scala/tuples/Tuples.scala b/bench-run/src/main/scala/tuples/Tuples.scala deleted file mode 100644 index ba2d14e76041..000000000000 --- a/bench-run/src/main/scala/tuples/Tuples.scala +++ /dev/null @@ -1,79 +0,0 @@ -package dotty.tools.benchmarks.tuples - -import org.openjdk.jmh.annotations._ -import scala.runtime.DynamicTuple - -@State(Scope.Thread) -class ConsConcatBenchmarks { - @Param(Array("10", "20")) - var size: Int = _ - var tuple: Tuple = _ - - @Setup - def setup(): Unit = { - tuple = () - - for (i <- 1 to size) - tuple = "string" *: tuple - } - - @Benchmark - def baseline(): Unit = {} - - // Cons benchmarks - @Benchmark - def tupleCons(): Tuple = { - "string" *: tuple - } - - @Benchmark - def dynamicTupleCons(): Tuple = { - DynamicTuple.dynamicCons("string", tuple) - } - - // Concat benchmarks - @Benchmark - def tupleConcat(): Tuple = { - tuple ++ tuple - } - - @Benchmark - def dynamicTupleConcat(): Tuple = { - DynamicTuple.dynamicConcat(tuple, tuple) - } - - // Interesting behaviour : I expect the two following to be the same because of TupleOptimizations.scala - @Benchmark - def tupleConcat2(): Tuple = { - ("string", "string") ++ ("string", "string") - } - - @Benchmark - def tupleNoConcat(): Tuple = { - ("string", "string", "string", "string") - } -} - -@State(Scope.Thread) -class ApplyBenchmarks { - val size: Int = 100 - - val tuple: NonEmptyTuple = { - var t: Tuple = () - for (i <- 1 to size) - t = "string" *: t - t.asInstanceOf[NonEmptyTuple] - } - - @Param(Array("1", "10", "25", "50", "75", "99")) - var index: Int = _ - - @Benchmark - def baseline(): Unit = {} - - // Apply benchmarks, doesn't work for some reason - // @Benchmark - // def tupleApply(): Unit = { - // DynamicTuple.dynamicApply(tuple, index) - // } -} diff --git a/bench/src/main/scala/Benchmarks.scala b/bench/src/main/scala/Benchmarks.scala index 779579cd1c6b..86b967762fb6 100644 --- a/bench/src/main/scala/Benchmarks.scala +++ b/bench/src/main/scala/Benchmarks.scala @@ -30,7 +30,6 @@ object Bench { val iterations = if (intArgs.length > 1) intArgs(1).toInt else 20 val forks = if (intArgs.length > 2) intArgs(2).toInt else 1 - import File.{ separator => sep } val args2 = args1.map { arg => From 0cdf81ee558dffd910c368f55eedbed4f5db463b Mon Sep 17 00:00:00 2001 From: Antoine Brunner Date: Tue, 1 Oct 2019 22:09:34 +0200 Subject: [PATCH 04/21] Create detailed benchmarks about tuples --- bench-run/outputs/concat.csv | 0 bench-run/src/main/scala/tuples/Apply.scala | 4 +- .../src/main/scala/tuples/ArrayOps.scala | 47 +++++++++++++++++++ bench-run/src/main/scala/tuples/Concat.scala | 2 +- bench-run/src/main/scala/tuples/Cons.scala | 41 ++++++++++++++++ 5 files changed, 91 insertions(+), 3 deletions(-) delete mode 100644 bench-run/outputs/concat.csv create mode 100644 bench-run/src/main/scala/tuples/ArrayOps.scala create mode 100644 bench-run/src/main/scala/tuples/Cons.scala diff --git a/bench-run/outputs/concat.csv b/bench-run/outputs/concat.csv deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/bench-run/src/main/scala/tuples/Apply.scala b/bench-run/src/main/scala/tuples/Apply.scala index cdb9e261053e..7df788cb2efc 100644 --- a/bench-run/src/main/scala/tuples/Apply.scala +++ b/bench-run/src/main/scala/tuples/Apply.scala @@ -4,7 +4,7 @@ import org.openjdk.jmh.annotations._ import scala.runtime.DynamicTuple @State(Scope.Thread) -class ApplyBenchmarks { +class Apply { @Param(Array("1 0")) var sizeAndIndex: String = _ var tuple: NonEmptyTuple = _ @@ -17,7 +17,7 @@ class ApplyBenchmarks { tuple = "elem" *: () for (i <- 1 until size) - tuple = "string" *: tuple + tuple = "elem" *: tuple } @Benchmark diff --git a/bench-run/src/main/scala/tuples/ArrayOps.scala b/bench-run/src/main/scala/tuples/ArrayOps.scala new file mode 100644 index 000000000000..e14e1c996167 --- /dev/null +++ b/bench-run/src/main/scala/tuples/ArrayOps.scala @@ -0,0 +1,47 @@ +package dotty.tools.benchmarks.tuples + +import org.openjdk.jmh.annotations._ +import scala.runtime.DynamicTuple + +@State(Scope.Thread) +class ArrayOps { + @Param(Array("0")) + var size: Int = _ + var tuple: Tuple = _ + var array: Array[Object] = _ + var iarray: IArray[Object] = _ + + @Setup + def setup(): Unit = { + tuple = () + + for (i <- 1 to size) + tuple = "elem" *: tuple + + array = Array.fill(size)("elem") + iarray = IArray.fill(size)("elem") + } + + @Benchmark + def baseline(): Unit = {} + + @Benchmark + def toArray(): Array[Object] = { + DynamicTuple.dynamicToArray(tuple) + } + + @Benchmark + def toIArray(): IArray[Object] = { + DynamicTuple.dynamicToIArray(tuple) + } + + @Benchmark + def fromArray(): Tuple = { + DynamicTuple.dynamicFromArray(array) + } + + @Benchmark + def fromIArray(): Tuple = { + DynamicTuple.dynamicFromIArray(iarray) + } +} diff --git a/bench-run/src/main/scala/tuples/Concat.scala b/bench-run/src/main/scala/tuples/Concat.scala index 978c6abeff1a..63b023322d4b 100644 --- a/bench-run/src/main/scala/tuples/Concat.scala +++ b/bench-run/src/main/scala/tuples/Concat.scala @@ -25,7 +25,7 @@ class Concat { val size1 = sizes.split(' ')(0).toInt val size2 = sizes.split(' ')(1).toInt tuple1 = tupleOfSize(size1) - tuple1 = tupleOfSize(size2) + tuple2 = tupleOfSize(size2) array1 = Array.fill(size1)("elem") array2 = Array.fill(size2)("elem") } diff --git a/bench-run/src/main/scala/tuples/Cons.scala b/bench-run/src/main/scala/tuples/Cons.scala new file mode 100644 index 000000000000..c5c68efcca1c --- /dev/null +++ b/bench-run/src/main/scala/tuples/Cons.scala @@ -0,0 +1,41 @@ +package dotty.tools.benchmarks.tuples + +import org.openjdk.jmh.annotations._ +import scala.runtime.DynamicTuple + +@State(Scope.Thread) +class Cons { + @Param(Array("0")) + var size: Int = _ + var tuple: Tuple = _ + var array: Array[Object] = _ + + @Setup + def setup(): Unit = { + tuple = () + + for (i <- 1 to size) + tuple = "elem" *: tuple + + array = Array.fill(size)("elem") + } + + @Benchmark + def baseline(): Unit = {} + + @Benchmark + def normal(): Tuple = { + "elem" *: tuple + } + + @Benchmark + def inlined(): Tuple = { + DynamicTuple.dynamicCons("elem", tuple) + } + + // This part is here to measure the performance of dong a cons on arrays directly + @Benchmark + def arrayCons(): Array[Object] = { + DynamicTuple.cons$Array("elem", array) + } +} From 049a3adce53c83c629a3cea963fe57f07d14a57f Mon Sep 17 00:00:00 2001 From: Antoine Brunner Date: Tue, 1 Oct 2019 22:24:03 +0200 Subject: [PATCH 05/21] Make input files for the benchmarks --- bench-run/inputs/apply.in | 1 + bench-run/inputs/{concat.txt => concat.in} | 0 bench-run/inputs/cons.in | 1 + 3 files changed, 2 insertions(+) create mode 100644 bench-run/inputs/apply.in rename bench-run/inputs/{concat.txt => concat.in} (100%) create mode 100644 bench-run/inputs/cons.in diff --git a/bench-run/inputs/apply.in b/bench-run/inputs/apply.in new file mode 100644 index 000000000000..3365fb5a87bb --- /dev/null +++ b/bench-run/inputs/apply.in @@ -0,0 +1 @@ +sizeAndIndex:1 0,6 0,6 5,11 0,11 5,11 10,16 0,16 5,16 10,16 15,21 0,21 5,21 10,21 15,21 20,26 0,26 5,26 10,26 15,26 20,26 25,31 0,31 5,31 10,31 15,31 20,31 25,31 30 \ No newline at end of file diff --git a/bench-run/inputs/concat.txt b/bench-run/inputs/concat.in similarity index 100% rename from bench-run/inputs/concat.txt rename to bench-run/inputs/concat.in diff --git a/bench-run/inputs/cons.in b/bench-run/inputs/cons.in new file mode 100644 index 000000000000..87ca4f3dfd85 --- /dev/null +++ b/bench-run/inputs/cons.in @@ -0,0 +1 @@ +size:0,5,10,15,20,25,30 \ No newline at end of file From c6a88e85dd4fd984bb674e88548ed6a03c7dbb9a Mon Sep 17 00:00:00 2001 From: Antoine Brunner Date: Wed, 2 Oct 2019 09:37:46 +0200 Subject: [PATCH 06/21] Add outputs of concat benchmarks --- bench-run/outputs/concat.csv | 295 +++++++++++++++++++++++++++++++++++ 1 file changed, 295 insertions(+) create mode 100644 bench-run/outputs/concat.csv diff --git a/bench-run/outputs/concat.csv b/bench-run/outputs/concat.csv new file mode 100644 index 000000000000..d8f32861f223 --- /dev/null +++ b/bench-run/outputs/concat.csv @@ -0,0 +1,295 @@ +"Benchmark","Mode","Threads","Samples","Score","Score Error (99.9%)","Unit","Param: sizes" +"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,43.488094,0.742509,"ns/op","0 0" +"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,37.246583,0.769948,"ns/op","0 5" +"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,37.821187,1.315976,"ns/op","0 10" +"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,38.490857,0.736351,"ns/op","0 15" +"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,40.290833,0.905165,"ns/op","0 20" +"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,39.535887,0.757934,"ns/op","0 25" +"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,40.654464,0.697325,"ns/op","0 30" +"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,27.289409,0.569568,"ns/op","5 0" +"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,43.301055,0.857886,"ns/op","5 5" +"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,43.521015,0.851255,"ns/op","5 10" +"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,45.573667,0.766589,"ns/op","5 15" +"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,45.770065,0.923906,"ns/op","5 20" +"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,45.759140,0.971084,"ns/op","5 25" +"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,46.450220,1.191643,"ns/op","5 30" +"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,27.438973,0.535034,"ns/op","10 0" +"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,43.526779,0.807807,"ns/op","10 5" +"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,43.829293,0.888853,"ns/op","10 10" +"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,45.641900,0.905702,"ns/op","10 15" +"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,45.723476,1.013583,"ns/op","10 20" +"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,45.421894,0.912429,"ns/op","10 25" +"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,47.630151,0.924153,"ns/op","10 30" +"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,28.162527,0.239812,"ns/op","15 0" +"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,44.569129,0.878811,"ns/op","15 5" +"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,44.829708,0.909951,"ns/op","15 10" +"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,46.800950,0.901774,"ns/op","15 15" +"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,46.581555,1.382670,"ns/op","15 20" +"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,46.787136,1.005488,"ns/op","15 25" +"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,49.795421,1.058560,"ns/op","15 30" +"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,28.334274,0.543448,"ns/op","20 0" +"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,44.566242,0.943875,"ns/op","20 5" +"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,44.697241,1.083458,"ns/op","20 10" +"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,45.990045,0.787530,"ns/op","20 15" +"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,46.861877,0.596299,"ns/op","20 20" +"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,46.928225,0.256207,"ns/op","20 25" +"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,49.276259,1.208086,"ns/op","20 30" +"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,28.614266,0.508494,"ns/op","25 0" +"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,44.440789,0.861255,"ns/op","25 5" +"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,44.812555,0.664966,"ns/op","25 10" +"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,46.748377,0.935177,"ns/op","25 15" +"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,47.663022,0.678699,"ns/op","25 20" +"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,47.467693,1.147664,"ns/op","25 25" +"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,47.103651,0.527903,"ns/op","25 30" +"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,29.837270,0.561916,"ns/op","30 0" +"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,46.168035,1.189375,"ns/op","30 5" +"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,46.167462,0.950895,"ns/op","30 10" +"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,48.683994,1.055132,"ns/op","30 15" +"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,48.795414,0.891281,"ns/op","30 20" +"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,48.152951,0.880661,"ns/op","30 25" +"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,49.933207,1.538616,"ns/op","30 30" +"dotty.tools.benchmarks.tuples.Concat.baseline","avgt",1,20,0.296916,0.002113,"ns/op","0 0" +"dotty.tools.benchmarks.tuples.Concat.baseline","avgt",1,20,0.297889,0.006059,"ns/op","0 5" +"dotty.tools.benchmarks.tuples.Concat.baseline","avgt",1,20,0.296278,0.000742,"ns/op","0 10" +"dotty.tools.benchmarks.tuples.Concat.baseline","avgt",1,20,0.296322,0.000758,"ns/op","0 15" +"dotty.tools.benchmarks.tuples.Concat.baseline","avgt",1,20,0.295653,0.000444,"ns/op","0 20" +"dotty.tools.benchmarks.tuples.Concat.baseline","avgt",1,20,0.295688,0.000749,"ns/op","0 25" +"dotty.tools.benchmarks.tuples.Concat.baseline","avgt",1,20,0.299634,0.009849,"ns/op","0 30" +"dotty.tools.benchmarks.tuples.Concat.baseline","avgt",1,20,0.296299,0.000938,"ns/op","5 0" +"dotty.tools.benchmarks.tuples.Concat.baseline","avgt",1,20,0.297702,0.004775,"ns/op","5 5" +"dotty.tools.benchmarks.tuples.Concat.baseline","avgt",1,20,0.296138,0.000323,"ns/op","5 10" +"dotty.tools.benchmarks.tuples.Concat.baseline","avgt",1,20,0.295930,0.000644,"ns/op","5 15" +"dotty.tools.benchmarks.tuples.Concat.baseline","avgt",1,20,0.296391,0.000820,"ns/op","5 20" +"dotty.tools.benchmarks.tuples.Concat.baseline","avgt",1,20,0.296541,0.000922,"ns/op","5 25" +"dotty.tools.benchmarks.tuples.Concat.baseline","avgt",1,20,0.298117,0.006964,"ns/op","5 30" +"dotty.tools.benchmarks.tuples.Concat.baseline","avgt",1,20,0.296104,0.001133,"ns/op","10 0" +"dotty.tools.benchmarks.tuples.Concat.baseline","avgt",1,20,0.295838,0.000420,"ns/op","10 5" +"dotty.tools.benchmarks.tuples.Concat.baseline","avgt",1,20,0.295459,0.000515,"ns/op","10 10" +"dotty.tools.benchmarks.tuples.Concat.baseline","avgt",1,20,0.295953,0.000451,"ns/op","10 15" +"dotty.tools.benchmarks.tuples.Concat.baseline","avgt",1,20,0.296068,0.000636,"ns/op","10 20" +"dotty.tools.benchmarks.tuples.Concat.baseline","avgt",1,20,0.296198,0.001034,"ns/op","10 25" +"dotty.tools.benchmarks.tuples.Concat.baseline","avgt",1,20,0.296534,0.001339,"ns/op","10 30" +"dotty.tools.benchmarks.tuples.Concat.baseline","avgt",1,20,0.296519,0.000608,"ns/op","15 0" +"dotty.tools.benchmarks.tuples.Concat.baseline","avgt",1,20,0.297473,0.002830,"ns/op","15 5" +"dotty.tools.benchmarks.tuples.Concat.baseline","avgt",1,20,0.296023,0.000684,"ns/op","15 10" +"dotty.tools.benchmarks.tuples.Concat.baseline","avgt",1,20,0.296294,0.000570,"ns/op","15 15" +"dotty.tools.benchmarks.tuples.Concat.baseline","avgt",1,20,0.296300,0.001330,"ns/op","15 20" +"dotty.tools.benchmarks.tuples.Concat.baseline","avgt",1,20,0.297613,0.003426,"ns/op","15 25" +"dotty.tools.benchmarks.tuples.Concat.baseline","avgt",1,20,0.298608,0.007740,"ns/op","15 30" +"dotty.tools.benchmarks.tuples.Concat.baseline","avgt",1,20,0.296764,0.003618,"ns/op","20 0" +"dotty.tools.benchmarks.tuples.Concat.baseline","avgt",1,20,0.296218,0.000292,"ns/op","20 5" +"dotty.tools.benchmarks.tuples.Concat.baseline","avgt",1,20,0.295742,0.000416,"ns/op","20 10" +"dotty.tools.benchmarks.tuples.Concat.baseline","avgt",1,20,0.296667,0.001613,"ns/op","20 15" +"dotty.tools.benchmarks.tuples.Concat.baseline","avgt",1,20,0.297131,0.001928,"ns/op","20 20" +"dotty.tools.benchmarks.tuples.Concat.baseline","avgt",1,20,0.302482,0.011770,"ns/op","20 25" +"dotty.tools.benchmarks.tuples.Concat.baseline","avgt",1,20,0.296503,0.000884,"ns/op","20 30" +"dotty.tools.benchmarks.tuples.Concat.baseline","avgt",1,20,0.295625,0.000324,"ns/op","25 0" +"dotty.tools.benchmarks.tuples.Concat.baseline","avgt",1,20,0.296373,0.001499,"ns/op","25 5" +"dotty.tools.benchmarks.tuples.Concat.baseline","avgt",1,20,0.296215,0.001193,"ns/op","25 10" +"dotty.tools.benchmarks.tuples.Concat.baseline","avgt",1,20,0.296889,0.001825,"ns/op","25 15" +"dotty.tools.benchmarks.tuples.Concat.baseline","avgt",1,20,0.299895,0.009819,"ns/op","25 20" +"dotty.tools.benchmarks.tuples.Concat.baseline","avgt",1,20,0.296156,0.000342,"ns/op","25 25" +"dotty.tools.benchmarks.tuples.Concat.baseline","avgt",1,20,0.295917,0.000888,"ns/op","25 30" +"dotty.tools.benchmarks.tuples.Concat.baseline","avgt",1,20,0.296124,0.000532,"ns/op","30 0" +"dotty.tools.benchmarks.tuples.Concat.baseline","avgt",1,20,0.297129,0.002037,"ns/op","30 5" +"dotty.tools.benchmarks.tuples.Concat.baseline","avgt",1,20,0.296278,0.003101,"ns/op","30 10" +"dotty.tools.benchmarks.tuples.Concat.baseline","avgt",1,20,0.297238,0.002289,"ns/op","30 15" +"dotty.tools.benchmarks.tuples.Concat.baseline","avgt",1,20,0.296578,0.001398,"ns/op","30 20" +"dotty.tools.benchmarks.tuples.Concat.baseline","avgt",1,20,0.296667,0.002615,"ns/op","30 25" +"dotty.tools.benchmarks.tuples.Concat.baseline","avgt",1,20,0.296790,0.001390,"ns/op","30 30" +"dotty.tools.benchmarks.tuples.Concat.fromArray","avgt",1,20,9.125775,0.026271,"ns/op","0 0" +"dotty.tools.benchmarks.tuples.Concat.fromArray","avgt",1,20,11.302720,0.305004,"ns/op","0 5" +"dotty.tools.benchmarks.tuples.Concat.fromArray","avgt",1,20,13.412848,0.380257,"ns/op","0 10" +"dotty.tools.benchmarks.tuples.Concat.fromArray","avgt",1,20,18.794902,0.375087,"ns/op","0 15" +"dotty.tools.benchmarks.tuples.Concat.fromArray","avgt",1,20,24.346368,0.345869,"ns/op","0 20" +"dotty.tools.benchmarks.tuples.Concat.fromArray","avgt",1,20,20.259839,0.458558,"ns/op","0 25" +"dotty.tools.benchmarks.tuples.Concat.fromArray","avgt",1,20,21.207446,0.401497,"ns/op","0 30" +"dotty.tools.benchmarks.tuples.Concat.fromArray","avgt",1,20,11.225935,0.167463,"ns/op","5 0" +"dotty.tools.benchmarks.tuples.Concat.fromArray","avgt",1,20,14.658921,0.287129,"ns/op","5 5" +"dotty.tools.benchmarks.tuples.Concat.fromArray","avgt",1,20,16.168293,0.366947,"ns/op","5 10" +"dotty.tools.benchmarks.tuples.Concat.fromArray","avgt",1,20,23.160395,0.439607,"ns/op","5 15" +"dotty.tools.benchmarks.tuples.Concat.fromArray","avgt",1,20,27.848175,0.466669,"ns/op","5 20" +"dotty.tools.benchmarks.tuples.Concat.fromArray","avgt",1,20,23.722687,0.722341,"ns/op","5 25" +"dotty.tools.benchmarks.tuples.Concat.fromArray","avgt",1,20,24.796975,0.429540,"ns/op","5 30" +"dotty.tools.benchmarks.tuples.Concat.fromArray","avgt",1,20,13.683153,0.222650,"ns/op","10 0" +"dotty.tools.benchmarks.tuples.Concat.fromArray","avgt",1,20,16.539849,0.563490,"ns/op","10 5" +"dotty.tools.benchmarks.tuples.Concat.fromArray","avgt",1,20,18.732598,0.538661,"ns/op","10 10" +"dotty.tools.benchmarks.tuples.Concat.fromArray","avgt",1,20,24.185286,0.548354,"ns/op","10 15" +"dotty.tools.benchmarks.tuples.Concat.fromArray","avgt",1,20,31.902459,0.709423,"ns/op","10 20" +"dotty.tools.benchmarks.tuples.Concat.fromArray","avgt",1,20,24.986563,0.934148,"ns/op","10 25" +"dotty.tools.benchmarks.tuples.Concat.fromArray","avgt",1,20,26.671230,0.564144,"ns/op","10 30" +"dotty.tools.benchmarks.tuples.Concat.fromArray","avgt",1,20,19.007867,0.297571,"ns/op","15 0" +"dotty.tools.benchmarks.tuples.Concat.fromArray","avgt",1,20,22.436590,0.432366,"ns/op","15 5" +"dotty.tools.benchmarks.tuples.Concat.fromArray","avgt",1,20,24.228573,0.568284,"ns/op","15 10" +"dotty.tools.benchmarks.tuples.Concat.fromArray","avgt",1,20,30.424745,0.706044,"ns/op","15 15" +"dotty.tools.benchmarks.tuples.Concat.fromArray","avgt",1,20,37.012855,0.380740,"ns/op","15 20" +"dotty.tools.benchmarks.tuples.Concat.fromArray","avgt",1,20,31.043667,0.628859,"ns/op","15 25" +"dotty.tools.benchmarks.tuples.Concat.fromArray","avgt",1,20,32.737919,0.569340,"ns/op","15 30" +"dotty.tools.benchmarks.tuples.Concat.fromArray","avgt",1,20,24.852247,0.289149,"ns/op","20 0" +"dotty.tools.benchmarks.tuples.Concat.fromArray","avgt",1,20,28.146332,0.577450,"ns/op","20 5" +"dotty.tools.benchmarks.tuples.Concat.fromArray","avgt",1,20,31.253027,0.469309,"ns/op","20 10" +"dotty.tools.benchmarks.tuples.Concat.fromArray","avgt",1,20,37.423641,0.624641,"ns/op","20 15" +"dotty.tools.benchmarks.tuples.Concat.fromArray","avgt",1,20,42.680919,0.672108,"ns/op","20 20" +"dotty.tools.benchmarks.tuples.Concat.fromArray","avgt",1,20,36.628155,1.062099,"ns/op","20 25" +"dotty.tools.benchmarks.tuples.Concat.fromArray","avgt",1,20,36.990993,0.807163,"ns/op","20 30" +"dotty.tools.benchmarks.tuples.Concat.fromArray","avgt",1,20,20.353774,0.779185,"ns/op","25 0" +"dotty.tools.benchmarks.tuples.Concat.fromArray","avgt",1,20,23.530520,0.659894,"ns/op","25 5" +"dotty.tools.benchmarks.tuples.Concat.fromArray","avgt",1,20,25.111842,0.476949,"ns/op","25 10" +"dotty.tools.benchmarks.tuples.Concat.fromArray","avgt",1,20,30.968435,0.706150,"ns/op","25 15" +"dotty.tools.benchmarks.tuples.Concat.fromArray","avgt",1,20,35.698730,0.627150,"ns/op","25 20" +"dotty.tools.benchmarks.tuples.Concat.fromArray","avgt",1,20,34.282418,0.619642,"ns/op","25 25" +"dotty.tools.benchmarks.tuples.Concat.fromArray","avgt",1,20,35.988278,0.560183,"ns/op","25 30" +"dotty.tools.benchmarks.tuples.Concat.fromArray","avgt",1,20,22.581618,1.121820,"ns/op","30 0" +"dotty.tools.benchmarks.tuples.Concat.fromArray","avgt",1,20,38.074565,3.093410,"ns/op","30 5" +"dotty.tools.benchmarks.tuples.Concat.fromArray","avgt",1,20,47.203330,3.738145,"ns/op","30 10" +"dotty.tools.benchmarks.tuples.Concat.fromArray","avgt",1,20,49.405073,4.497152,"ns/op","30 15" +"dotty.tools.benchmarks.tuples.Concat.fromArray","avgt",1,20,55.724223,3.532927,"ns/op","30 20" +"dotty.tools.benchmarks.tuples.Concat.fromArray","avgt",1,20,36.855198,0.955945,"ns/op","30 25" +"dotty.tools.benchmarks.tuples.Concat.fromArray","avgt",1,20,38.083469,0.622511,"ns/op","30 30" +"dotty.tools.benchmarks.tuples.Concat.inlined","avgt",1,20,3.304421,0.005108,"ns/op","0 0" +"dotty.tools.benchmarks.tuples.Concat.inlined","avgt",1,20,47.357216,0.897680,"ns/op","0 5" +"dotty.tools.benchmarks.tuples.Concat.inlined","avgt",1,20,62.355399,1.010405,"ns/op","0 10" +"dotty.tools.benchmarks.tuples.Concat.inlined","avgt",1,20,84.413852,1.642368,"ns/op","0 15" +"dotty.tools.benchmarks.tuples.Concat.inlined","avgt",1,20,101.181224,1.994020,"ns/op","0 20" +"dotty.tools.benchmarks.tuples.Concat.inlined","avgt",1,20,59.328125,1.045556,"ns/op","0 25" +"dotty.tools.benchmarks.tuples.Concat.inlined","avgt",1,20,62.845135,1.553118,"ns/op","0 30" +"dotty.tools.benchmarks.tuples.Concat.inlined","avgt",1,20,3.309582,0.008011,"ns/op","5 0" +"dotty.tools.benchmarks.tuples.Concat.inlined","avgt",1,20,48.116168,0.673419,"ns/op","5 5" +"dotty.tools.benchmarks.tuples.Concat.inlined","avgt",1,20,114.914588,1.394064,"ns/op","5 10" +"dotty.tools.benchmarks.tuples.Concat.inlined","avgt",1,20,134.845240,3.318993,"ns/op","5 15" +"dotty.tools.benchmarks.tuples.Concat.inlined","avgt",1,20,149.053137,3.871694,"ns/op","5 20" +"dotty.tools.benchmarks.tuples.Concat.inlined","avgt",1,20,73.608175,1.105263,"ns/op","5 25" +"dotty.tools.benchmarks.tuples.Concat.inlined","avgt",1,20,76.482085,1.424616,"ns/op","5 30" +"dotty.tools.benchmarks.tuples.Concat.inlined","avgt",1,20,3.311367,0.010019,"ns/op","10 0" +"dotty.tools.benchmarks.tuples.Concat.inlined","avgt",1,20,117.289535,2.607452,"ns/op","10 5" +"dotty.tools.benchmarks.tuples.Concat.inlined","avgt",1,20,87.071647,1.515470,"ns/op","10 10" +"dotty.tools.benchmarks.tuples.Concat.inlined","avgt",1,20,148.750405,3.353486,"ns/op","10 15" +"dotty.tools.benchmarks.tuples.Concat.inlined","avgt",1,20,186.524158,4.110852,"ns/op","10 20" +"dotty.tools.benchmarks.tuples.Concat.inlined","avgt",1,20,88.508318,1.838787,"ns/op","10 25" +"dotty.tools.benchmarks.tuples.Concat.inlined","avgt",1,20,92.685797,1.977909,"ns/op","10 30" +"dotty.tools.benchmarks.tuples.Concat.inlined","avgt",1,20,3.308087,0.003372,"ns/op","15 0" +"dotty.tools.benchmarks.tuples.Concat.inlined","avgt",1,20,135.583286,3.318059,"ns/op","15 5" +"dotty.tools.benchmarks.tuples.Concat.inlined","avgt",1,20,147.358734,2.326042,"ns/op","15 10" +"dotty.tools.benchmarks.tuples.Concat.inlined","avgt",1,20,112.345294,2.219790,"ns/op","15 15" +"dotty.tools.benchmarks.tuples.Concat.inlined","avgt",1,20,271.265575,4.963078,"ns/op","15 20" +"dotty.tools.benchmarks.tuples.Concat.inlined","avgt",1,20,140.849205,2.975120,"ns/op","15 25" +"dotty.tools.benchmarks.tuples.Concat.inlined","avgt",1,20,148.200149,2.875708,"ns/op","15 30" +"dotty.tools.benchmarks.tuples.Concat.inlined","avgt",1,20,3.318883,0.024977,"ns/op","20 0" +"dotty.tools.benchmarks.tuples.Concat.inlined","avgt",1,20,146.964209,2.261860,"ns/op","20 5" +"dotty.tools.benchmarks.tuples.Concat.inlined","avgt",1,20,163.339696,3.511454,"ns/op","20 10" +"dotty.tools.benchmarks.tuples.Concat.inlined","avgt",1,20,173.757103,3.301100,"ns/op","20 15" +"dotty.tools.benchmarks.tuples.Concat.inlined","avgt",1,20,157.880097,2.541304,"ns/op","20 20" +"dotty.tools.benchmarks.tuples.Concat.inlined","avgt",1,20,178.448407,3.965967,"ns/op","20 25" +"dotty.tools.benchmarks.tuples.Concat.inlined","avgt",1,20,174.165417,3.902894,"ns/op","20 30" +"dotty.tools.benchmarks.tuples.Concat.inlined","avgt",1,20,3.344564,0.077734,"ns/op","25 0" +"dotty.tools.benchmarks.tuples.Concat.inlined","avgt",1,20,74.164878,1.623216,"ns/op","25 5" +"dotty.tools.benchmarks.tuples.Concat.inlined","avgt",1,20,88.972737,1.738735,"ns/op","25 10" +"dotty.tools.benchmarks.tuples.Concat.inlined","avgt",1,20,136.007510,2.853946,"ns/op","25 15" +"dotty.tools.benchmarks.tuples.Concat.inlined","avgt",1,20,168.209235,3.229061,"ns/op","25 20" +"dotty.tools.benchmarks.tuples.Concat.inlined","avgt",1,20,88.594926,1.588265,"ns/op","25 25" +"dotty.tools.benchmarks.tuples.Concat.inlined","avgt",1,20,94.931866,1.971255,"ns/op","25 30" +"dotty.tools.benchmarks.tuples.Concat.inlined","avgt",1,20,3.365165,0.060829,"ns/op","30 0" +"dotty.tools.benchmarks.tuples.Concat.inlined","avgt",1,20,79.621535,2.312105,"ns/op","30 5" +"dotty.tools.benchmarks.tuples.Concat.inlined","avgt",1,20,93.077460,2.091564,"ns/op","30 10" +"dotty.tools.benchmarks.tuples.Concat.inlined","avgt",1,20,142.190377,3.380533,"ns/op","30 15" +"dotty.tools.benchmarks.tuples.Concat.inlined","avgt",1,20,124.057755,1.789372,"ns/op","30 20" +"dotty.tools.benchmarks.tuples.Concat.inlined","avgt",1,20,95.373623,1.744199,"ns/op","30 25" +"dotty.tools.benchmarks.tuples.Concat.inlined","avgt",1,20,100.857522,1.846925,"ns/op","30 30" +"dotty.tools.benchmarks.tuples.Concat.normal","avgt",1,20,3.310276,0.010300,"ns/op","0 0" +"dotty.tools.benchmarks.tuples.Concat.normal","avgt",1,20,46.773344,0.874571,"ns/op","0 5" +"dotty.tools.benchmarks.tuples.Concat.normal","avgt",1,20,61.516870,1.217884,"ns/op","0 10" +"dotty.tools.benchmarks.tuples.Concat.normal","avgt",1,20,79.431888,1.329849,"ns/op","0 15" +"dotty.tools.benchmarks.tuples.Concat.normal","avgt",1,20,107.332997,1.974959,"ns/op","0 20" +"dotty.tools.benchmarks.tuples.Concat.normal","avgt",1,20,59.078192,1.446891,"ns/op","0 25" +"dotty.tools.benchmarks.tuples.Concat.normal","avgt",1,20,62.280740,2.449796,"ns/op","0 30" +"dotty.tools.benchmarks.tuples.Concat.normal","avgt",1,20,3.334899,0.008474,"ns/op","5 0" +"dotty.tools.benchmarks.tuples.Concat.normal","avgt",1,20,49.513244,0.875855,"ns/op","5 5" +"dotty.tools.benchmarks.tuples.Concat.normal","avgt",1,20,116.226224,2.568176,"ns/op","5 10" +"dotty.tools.benchmarks.tuples.Concat.normal","avgt",1,20,134.193954,2.853277,"ns/op","5 15" +"dotty.tools.benchmarks.tuples.Concat.normal","avgt",1,20,147.742421,3.879051,"ns/op","5 20" +"dotty.tools.benchmarks.tuples.Concat.normal","avgt",1,20,73.906389,1.273097,"ns/op","5 25" +"dotty.tools.benchmarks.tuples.Concat.normal","avgt",1,20,76.217563,2.122772,"ns/op","5 30" +"dotty.tools.benchmarks.tuples.Concat.normal","avgt",1,20,3.307850,0.006439,"ns/op","10 0" +"dotty.tools.benchmarks.tuples.Concat.normal","avgt",1,20,116.416262,1.810332,"ns/op","10 5" +"dotty.tools.benchmarks.tuples.Concat.normal","avgt",1,20,85.687748,1.008226,"ns/op","10 10" +"dotty.tools.benchmarks.tuples.Concat.normal","avgt",1,20,147.581659,3.232372,"ns/op","10 15" +"dotty.tools.benchmarks.tuples.Concat.normal","avgt",1,20,164.979090,2.673710,"ns/op","10 20" +"dotty.tools.benchmarks.tuples.Concat.normal","avgt",1,20,89.639258,1.791888,"ns/op","10 25" +"dotty.tools.benchmarks.tuples.Concat.normal","avgt",1,20,94.112237,2.273668,"ns/op","10 30" +"dotty.tools.benchmarks.tuples.Concat.normal","avgt",1,20,3.307937,0.004650,"ns/op","15 0" +"dotty.tools.benchmarks.tuples.Concat.normal","avgt",1,20,143.074072,3.259205,"ns/op","15 5" +"dotty.tools.benchmarks.tuples.Concat.normal","avgt",1,20,158.844317,2.842224,"ns/op","15 10" +"dotty.tools.benchmarks.tuples.Concat.normal","avgt",1,20,113.146152,2.052088,"ns/op","15 15" +"dotty.tools.benchmarks.tuples.Concat.normal","avgt",1,20,269.648724,5.728181,"ns/op","15 20" +"dotty.tools.benchmarks.tuples.Concat.normal","avgt",1,20,143.029147,2.635973,"ns/op","15 25" +"dotty.tools.benchmarks.tuples.Concat.normal","avgt",1,20,147.571838,2.448285,"ns/op","15 30" +"dotty.tools.benchmarks.tuples.Concat.normal","avgt",1,20,3.302668,0.004579,"ns/op","20 0" +"dotty.tools.benchmarks.tuples.Concat.normal","avgt",1,20,145.147086,2.897344,"ns/op","20 5" +"dotty.tools.benchmarks.tuples.Concat.normal","avgt",1,20,161.965921,3.979057,"ns/op","20 10" +"dotty.tools.benchmarks.tuples.Concat.normal","avgt",1,20,183.735687,4.288038,"ns/op","20 15" +"dotty.tools.benchmarks.tuples.Concat.normal","avgt",1,20,170.631467,4.981103,"ns/op","20 20" +"dotty.tools.benchmarks.tuples.Concat.normal","avgt",1,20,170.445704,3.682283,"ns/op","20 25" +"dotty.tools.benchmarks.tuples.Concat.normal","avgt",1,20,177.384401,3.598712,"ns/op","20 30" +"dotty.tools.benchmarks.tuples.Concat.normal","avgt",1,20,3.310696,0.006222,"ns/op","25 0" +"dotty.tools.benchmarks.tuples.Concat.normal","avgt",1,20,77.474274,2.392312,"ns/op","25 5" +"dotty.tools.benchmarks.tuples.Concat.normal","avgt",1,20,88.532456,1.509054,"ns/op","25 10" +"dotty.tools.benchmarks.tuples.Concat.normal","avgt",1,20,99.986462,2.130648,"ns/op","25 15" +"dotty.tools.benchmarks.tuples.Concat.normal","avgt",1,20,169.174422,3.183760,"ns/op","25 20" +"dotty.tools.benchmarks.tuples.Concat.normal","avgt",1,20,88.879444,1.884461,"ns/op","25 25" +"dotty.tools.benchmarks.tuples.Concat.normal","avgt",1,20,95.039518,2.003521,"ns/op","25 30" +"dotty.tools.benchmarks.tuples.Concat.normal","avgt",1,20,3.307241,0.004169,"ns/op","30 0" +"dotty.tools.benchmarks.tuples.Concat.normal","avgt",1,20,77.257356,1.728100,"ns/op","30 5" +"dotty.tools.benchmarks.tuples.Concat.normal","avgt",1,20,91.369279,1.830024,"ns/op","30 10" +"dotty.tools.benchmarks.tuples.Concat.normal","avgt",1,20,107.996688,2.264439,"ns/op","30 15" +"dotty.tools.benchmarks.tuples.Concat.normal","avgt",1,20,169.600985,4.199389,"ns/op","30 20" +"dotty.tools.benchmarks.tuples.Concat.normal","avgt",1,20,95.650157,2.574563,"ns/op","30 25" +"dotty.tools.benchmarks.tuples.Concat.normal","avgt",1,20,101.311623,2.026050,"ns/op","30 30" +"dotty.tools.benchmarks.tuples.Concat.toArray","avgt",1,20,6.042699,0.246795,"ns/op","0 0" +"dotty.tools.benchmarks.tuples.Concat.toArray","avgt",1,20,12.433884,0.227740,"ns/op","0 5" +"dotty.tools.benchmarks.tuples.Concat.toArray","avgt",1,20,26.622283,0.685589,"ns/op","0 10" +"dotty.tools.benchmarks.tuples.Concat.toArray","avgt",1,20,38.947305,0.647786,"ns/op","0 15" +"dotty.tools.benchmarks.tuples.Concat.toArray","avgt",1,20,55.037695,0.913188,"ns/op","0 20" +"dotty.tools.benchmarks.tuples.Concat.toArray","avgt",1,20,15.481205,0.288231,"ns/op","0 25" +"dotty.tools.benchmarks.tuples.Concat.toArray","avgt",1,20,17.797620,0.833941,"ns/op","0 30" +"dotty.tools.benchmarks.tuples.Concat.toArray","avgt",1,20,12.979574,0.257405,"ns/op","5 0" +"dotty.tools.benchmarks.tuples.Concat.toArray","avgt",1,20,18.467440,0.384974,"ns/op","5 5" +"dotty.tools.benchmarks.tuples.Concat.toArray","avgt",1,20,69.145286,1.199418,"ns/op","5 10" +"dotty.tools.benchmarks.tuples.Concat.toArray","avgt",1,20,82.461732,1.720337,"ns/op","5 15" +"dotty.tools.benchmarks.tuples.Concat.toArray","avgt",1,20,91.054072,1.906895,"ns/op","5 20" +"dotty.tools.benchmarks.tuples.Concat.toArray","avgt",1,20,23.295773,2.008870,"ns/op","5 25" +"dotty.tools.benchmarks.tuples.Concat.toArray","avgt",1,20,23.648691,0.395570,"ns/op","5 30" +"dotty.tools.benchmarks.tuples.Concat.toArray","avgt",1,20,29.637684,1.240877,"ns/op","10 0" +"dotty.tools.benchmarks.tuples.Concat.toArray","avgt",1,20,69.401806,1.860531,"ns/op","10 5" +"dotty.tools.benchmarks.tuples.Concat.toArray","avgt",1,20,46.730533,0.664261,"ns/op","10 10" +"dotty.tools.benchmarks.tuples.Concat.toArray","avgt",1,20,95.654188,1.718551,"ns/op","10 15" +"dotty.tools.benchmarks.tuples.Concat.toArray","avgt",1,20,112.649526,1.093612,"ns/op","10 20" +"dotty.tools.benchmarks.tuples.Concat.toArray","avgt",1,20,34.731513,1.284892,"ns/op","10 25" +"dotty.tools.benchmarks.tuples.Concat.toArray","avgt",1,20,35.476735,0.755868,"ns/op","10 30" +"dotty.tools.benchmarks.tuples.Concat.toArray","avgt",1,20,38.983245,0.738978,"ns/op","15 0" +"dotty.tools.benchmarks.tuples.Concat.toArray","avgt",1,20,80.701039,1.604372,"ns/op","15 5" +"dotty.tools.benchmarks.tuples.Concat.toArray","avgt",1,20,95.146734,1.670834,"ns/op","15 10" +"dotty.tools.benchmarks.tuples.Concat.toArray","avgt",1,20,65.323085,0.783357,"ns/op","15 15" +"dotty.tools.benchmarks.tuples.Concat.toArray","avgt",1,20,203.859339,5.371899,"ns/op","15 20" +"dotty.tools.benchmarks.tuples.Concat.toArray","avgt",1,20,80.978335,2.629284,"ns/op","15 25" +"dotty.tools.benchmarks.tuples.Concat.toArray","avgt",1,20,80.895883,1.616339,"ns/op","15 30" +"dotty.tools.benchmarks.tuples.Concat.toArray","avgt",1,20,57.814495,1.105009,"ns/op","20 0" +"dotty.tools.benchmarks.tuples.Concat.toArray","avgt",1,20,94.159343,1.769930,"ns/op","20 5" +"dotty.tools.benchmarks.tuples.Concat.toArray","avgt",1,20,115.329750,2.122294,"ns/op","20 10" +"dotty.tools.benchmarks.tuples.Concat.toArray","avgt",1,20,125.925625,2.395582,"ns/op","20 15" +"dotty.tools.benchmarks.tuples.Concat.toArray","avgt",1,20,102.765100,2.448643,"ns/op","20 20" +"dotty.tools.benchmarks.tuples.Concat.toArray","avgt",1,20,109.346682,2.225351,"ns/op","20 25" +"dotty.tools.benchmarks.tuples.Concat.toArray","avgt",1,20,110.555813,2.248476,"ns/op","20 30" +"dotty.tools.benchmarks.tuples.Concat.toArray","avgt",1,20,15.762131,0.603014,"ns/op","25 0" +"dotty.tools.benchmarks.tuples.Concat.toArray","avgt",1,20,21.959613,0.824251,"ns/op","25 5" +"dotty.tools.benchmarks.tuples.Concat.toArray","avgt",1,20,34.735191,0.498401,"ns/op","25 10" +"dotty.tools.benchmarks.tuples.Concat.toArray","avgt",1,20,43.473183,0.709165,"ns/op","25 15" +"dotty.tools.benchmarks.tuples.Concat.toArray","avgt",1,20,118.175405,2.528024,"ns/op","25 20" +"dotty.tools.benchmarks.tuples.Concat.toArray","avgt",1,20,30.201730,1.093277,"ns/op","25 25" +"dotty.tools.benchmarks.tuples.Concat.toArray","avgt",1,20,31.827353,0.542522,"ns/op","25 30" +"dotty.tools.benchmarks.tuples.Concat.toArray","avgt",1,20,17.596408,0.323729,"ns/op","30 0" +"dotty.tools.benchmarks.tuples.Concat.toArray","avgt",1,20,23.788263,0.890207,"ns/op","30 5" +"dotty.tools.benchmarks.tuples.Concat.toArray","avgt",1,20,35.949717,1.013685,"ns/op","30 10" +"dotty.tools.benchmarks.tuples.Concat.toArray","avgt",1,20,44.433869,0.920946,"ns/op","30 15" +"dotty.tools.benchmarks.tuples.Concat.toArray","avgt",1,20,118.928645,2.453709,"ns/op","30 20" +"dotty.tools.benchmarks.tuples.Concat.toArray","avgt",1,20,31.861033,0.658809,"ns/op","30 25" +"dotty.tools.benchmarks.tuples.Concat.toArray","avgt",1,20,35.703868,0.803278,"ns/op","30 30" From e06a5f82473fd9dca217c7aee1b724e8bba7c24a Mon Sep 17 00:00:00 2001 From: Antoine Brunner Date: Wed, 2 Oct 2019 10:17:06 +0200 Subject: [PATCH 07/21] Add outputs of cons benchmarks --- bench-run/outputs/cons.csv | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 bench-run/outputs/cons.csv diff --git a/bench-run/outputs/cons.csv b/bench-run/outputs/cons.csv new file mode 100644 index 000000000000..bcc9f8593f28 --- /dev/null +++ b/bench-run/outputs/cons.csv @@ -0,0 +1,29 @@ +"Benchmark","Mode","Threads","Samples","Score","Score Error (99.9%)","Unit","Param: size" +"dotty.tools.benchmarks.tuples.Cons.arrayCons","avgt",1,20,23.593074,0.559760,"ns/op",0 +"dotty.tools.benchmarks.tuples.Cons.arrayCons","avgt",1,20,23.126002,0.348034,"ns/op",5 +"dotty.tools.benchmarks.tuples.Cons.arrayCons","avgt",1,20,22.677165,0.459156,"ns/op",10 +"dotty.tools.benchmarks.tuples.Cons.arrayCons","avgt",1,20,24.910038,0.479292,"ns/op",15 +"dotty.tools.benchmarks.tuples.Cons.arrayCons","avgt",1,20,25.165248,0.504894,"ns/op",20 +"dotty.tools.benchmarks.tuples.Cons.arrayCons","avgt",1,20,25.241252,0.416694,"ns/op",25 +"dotty.tools.benchmarks.tuples.Cons.arrayCons","avgt",1,20,27.782659,0.559301,"ns/op",30 +"dotty.tools.benchmarks.tuples.Cons.baseline","avgt",1,20,0.298321,0.006222,"ns/op",0 +"dotty.tools.benchmarks.tuples.Cons.baseline","avgt",1,20,0.296025,0.000850,"ns/op",5 +"dotty.tools.benchmarks.tuples.Cons.baseline","avgt",1,20,0.299156,0.008331,"ns/op",10 +"dotty.tools.benchmarks.tuples.Cons.baseline","avgt",1,20,0.296062,0.001481,"ns/op",15 +"dotty.tools.benchmarks.tuples.Cons.baseline","avgt",1,20,0.296046,0.001143,"ns/op",20 +"dotty.tools.benchmarks.tuples.Cons.baseline","avgt",1,20,0.308926,0.017358,"ns/op",25 +"dotty.tools.benchmarks.tuples.Cons.baseline","avgt",1,20,0.306508,0.007257,"ns/op",30 +"dotty.tools.benchmarks.tuples.Cons.inlined","avgt",1,20,4.738640,0.191935,"ns/op",0 +"dotty.tools.benchmarks.tuples.Cons.inlined","avgt",1,20,69.176006,6.155676,"ns/op",5 +"dotty.tools.benchmarks.tuples.Cons.inlined","avgt",1,20,88.832151,1.937672,"ns/op",10 +"dotty.tools.benchmarks.tuples.Cons.inlined","avgt",1,20,116.252318,2.425801,"ns/op",15 +"dotty.tools.benchmarks.tuples.Cons.inlined","avgt",1,20,87.405409,1.581465,"ns/op",20 +"dotty.tools.benchmarks.tuples.Cons.inlined","avgt",1,20,49.311543,1.774938,"ns/op",25 +"dotty.tools.benchmarks.tuples.Cons.inlined","avgt",1,20,55.203256,0.955310,"ns/op",30 +"dotty.tools.benchmarks.tuples.Cons.normal","avgt",1,20,4.739596,0.188809,"ns/op",0 +"dotty.tools.benchmarks.tuples.Cons.normal","avgt",1,20,63.384731,1.026435,"ns/op",5 +"dotty.tools.benchmarks.tuples.Cons.normal","avgt",1,20,90.589794,2.444226,"ns/op",10 +"dotty.tools.benchmarks.tuples.Cons.normal","avgt",1,20,116.843488,2.254244,"ns/op",15 +"dotty.tools.benchmarks.tuples.Cons.normal","avgt",1,20,86.216455,1.433045,"ns/op",20 +"dotty.tools.benchmarks.tuples.Cons.normal","avgt",1,20,49.051014,1.077130,"ns/op",25 +"dotty.tools.benchmarks.tuples.Cons.normal","avgt",1,20,55.671031,1.661106,"ns/op",30 From 109942c5737b348fcdaa14eb639c4b6c990e08a0 Mon Sep 17 00:00:00 2001 From: Antoine Brunner Date: Wed, 2 Oct 2019 11:47:48 +0200 Subject: [PATCH 08/21] Add outputs of apply benchmarks --- bench-run/outputs/apply.csv | 85 +++++++++++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 bench-run/outputs/apply.csv diff --git a/bench-run/outputs/apply.csv b/bench-run/outputs/apply.csv new file mode 100644 index 000000000000..7eb9219323cc --- /dev/null +++ b/bench-run/outputs/apply.csv @@ -0,0 +1,85 @@ +"Benchmark","Mode","Threads","Samples","Score","Score Error (99.9%)","Unit","Param: sizeAndIndex" +"dotty.tools.benchmarks.tuples.Apply.baseline","avgt",1,20,0.302796,0.003992,"ns/op","1 0" +"dotty.tools.benchmarks.tuples.Apply.baseline","avgt",1,20,0.302248,0.004611,"ns/op","6 0" +"dotty.tools.benchmarks.tuples.Apply.baseline","avgt",1,20,0.299675,0.004791,"ns/op","6 5" +"dotty.tools.benchmarks.tuples.Apply.baseline","avgt",1,20,0.308888,0.006956,"ns/op","11 0" +"dotty.tools.benchmarks.tuples.Apply.baseline","avgt",1,20,0.301277,0.003535,"ns/op","11 5" +"dotty.tools.benchmarks.tuples.Apply.baseline","avgt",1,20,0.300426,0.003094,"ns/op","11 10" +"dotty.tools.benchmarks.tuples.Apply.baseline","avgt",1,20,0.301387,0.002515,"ns/op","16 0" +"dotty.tools.benchmarks.tuples.Apply.baseline","avgt",1,20,0.304609,0.005275,"ns/op","16 5" +"dotty.tools.benchmarks.tuples.Apply.baseline","avgt",1,20,0.298971,0.003402,"ns/op","16 10" +"dotty.tools.benchmarks.tuples.Apply.baseline","avgt",1,20,0.302746,0.005369,"ns/op","16 15" +"dotty.tools.benchmarks.tuples.Apply.baseline","avgt",1,20,0.303780,0.004195,"ns/op","21 0" +"dotty.tools.benchmarks.tuples.Apply.baseline","avgt",1,20,0.309071,0.006855,"ns/op","21 5" +"dotty.tools.benchmarks.tuples.Apply.baseline","avgt",1,20,0.305058,0.005890,"ns/op","21 10" +"dotty.tools.benchmarks.tuples.Apply.baseline","avgt",1,20,0.300222,0.002992,"ns/op","21 15" +"dotty.tools.benchmarks.tuples.Apply.baseline","avgt",1,20,0.303375,0.005000,"ns/op","21 20" +"dotty.tools.benchmarks.tuples.Apply.baseline","avgt",1,20,0.303624,0.006801,"ns/op","26 0" +"dotty.tools.benchmarks.tuples.Apply.baseline","avgt",1,20,0.317166,0.007660,"ns/op","26 5" +"dotty.tools.benchmarks.tuples.Apply.baseline","avgt",1,20,0.302866,0.002890,"ns/op","26 10" +"dotty.tools.benchmarks.tuples.Apply.baseline","avgt",1,20,0.307574,0.006372,"ns/op","26 15" +"dotty.tools.benchmarks.tuples.Apply.baseline","avgt",1,20,0.312211,0.008439,"ns/op","26 20" +"dotty.tools.benchmarks.tuples.Apply.baseline","avgt",1,20,0.300770,0.004192,"ns/op","26 25" +"dotty.tools.benchmarks.tuples.Apply.baseline","avgt",1,20,0.313411,0.008635,"ns/op","31 0" +"dotty.tools.benchmarks.tuples.Apply.baseline","avgt",1,20,0.310805,0.007222,"ns/op","31 5" +"dotty.tools.benchmarks.tuples.Apply.baseline","avgt",1,20,0.305519,0.006882,"ns/op","31 10" +"dotty.tools.benchmarks.tuples.Apply.baseline","avgt",1,20,0.313372,0.009065,"ns/op","31 15" +"dotty.tools.benchmarks.tuples.Apply.baseline","avgt",1,20,0.303700,0.005063,"ns/op","31 20" +"dotty.tools.benchmarks.tuples.Apply.baseline","avgt",1,20,0.299757,0.002211,"ns/op","31 25" +"dotty.tools.benchmarks.tuples.Apply.baseline","avgt",1,20,0.298848,0.002455,"ns/op","31 30" +"dotty.tools.benchmarks.tuples.Apply.inlined","avgt",1,20,3.706122,0.082386,"ns/op","1 0" +"dotty.tools.benchmarks.tuples.Apply.inlined","avgt",1,20,4.206598,0.076812,"ns/op","6 0" +"dotty.tools.benchmarks.tuples.Apply.inlined","avgt",1,20,4.027952,0.109764,"ns/op","6 5" +"dotty.tools.benchmarks.tuples.Apply.inlined","avgt",1,20,4.628887,0.149810,"ns/op","11 0" +"dotty.tools.benchmarks.tuples.Apply.inlined","avgt",1,20,4.322583,0.122501,"ns/op","11 5" +"dotty.tools.benchmarks.tuples.Apply.inlined","avgt",1,20,4.260264,0.068996,"ns/op","11 10" +"dotty.tools.benchmarks.tuples.Apply.inlined","avgt",1,20,4.502691,0.046695,"ns/op","16 0" +"dotty.tools.benchmarks.tuples.Apply.inlined","avgt",1,20,4.225894,0.076483,"ns/op","16 5" +"dotty.tools.benchmarks.tuples.Apply.inlined","avgt",1,20,4.491069,0.031204,"ns/op","16 10" +"dotty.tools.benchmarks.tuples.Apply.inlined","avgt",1,20,4.179247,0.025271,"ns/op","16 15" +"dotty.tools.benchmarks.tuples.Apply.inlined","avgt",1,20,4.577740,0.095874,"ns/op","21 0" +"dotty.tools.benchmarks.tuples.Apply.inlined","avgt",1,20,4.340975,0.101002,"ns/op","21 5" +"dotty.tools.benchmarks.tuples.Apply.inlined","avgt",1,20,4.549919,0.085750,"ns/op","21 10" +"dotty.tools.benchmarks.tuples.Apply.inlined","avgt",1,20,4.220413,0.061036,"ns/op","21 15" +"dotty.tools.benchmarks.tuples.Apply.inlined","avgt",1,20,3.903558,0.058349,"ns/op","21 20" +"dotty.tools.benchmarks.tuples.Apply.inlined","avgt",1,20,4.202939,0.050177,"ns/op","26 0" +"dotty.tools.benchmarks.tuples.Apply.inlined","avgt",1,20,4.200001,0.059330,"ns/op","26 5" +"dotty.tools.benchmarks.tuples.Apply.inlined","avgt",1,20,4.198506,0.061250,"ns/op","26 10" +"dotty.tools.benchmarks.tuples.Apply.inlined","avgt",1,20,4.205208,0.041869,"ns/op","26 15" +"dotty.tools.benchmarks.tuples.Apply.inlined","avgt",1,20,4.198259,0.053616,"ns/op","26 20" +"dotty.tools.benchmarks.tuples.Apply.inlined","avgt",1,20,4.257568,0.101048,"ns/op","26 25" +"dotty.tools.benchmarks.tuples.Apply.inlined","avgt",1,20,4.225524,0.065781,"ns/op","31 0" +"dotty.tools.benchmarks.tuples.Apply.inlined","avgt",1,20,4.204335,0.041007,"ns/op","31 5" +"dotty.tools.benchmarks.tuples.Apply.inlined","avgt",1,20,4.254856,0.053846,"ns/op","31 10" +"dotty.tools.benchmarks.tuples.Apply.inlined","avgt",1,20,4.204166,0.061426,"ns/op","31 15" +"dotty.tools.benchmarks.tuples.Apply.inlined","avgt",1,20,4.253177,0.068150,"ns/op","31 20" +"dotty.tools.benchmarks.tuples.Apply.inlined","avgt",1,20,4.418300,0.109917,"ns/op","31 25" +"dotty.tools.benchmarks.tuples.Apply.inlined","avgt",1,20,4.318239,0.108614,"ns/op","31 30" +"dotty.tools.benchmarks.tuples.Apply.normal","avgt",1,20,3.631052,0.067959,"ns/op","1 0" +"dotty.tools.benchmarks.tuples.Apply.normal","avgt",1,20,4.228909,0.104045,"ns/op","6 0" +"dotty.tools.benchmarks.tuples.Apply.normal","avgt",1,20,3.956169,0.085901,"ns/op","6 5" +"dotty.tools.benchmarks.tuples.Apply.normal","avgt",1,20,4.528560,0.067650,"ns/op","11 0" +"dotty.tools.benchmarks.tuples.Apply.normal","avgt",1,20,4.267749,0.121158,"ns/op","11 5" +"dotty.tools.benchmarks.tuples.Apply.normal","avgt",1,20,4.340369,0.094560,"ns/op","11 10" +"dotty.tools.benchmarks.tuples.Apply.normal","avgt",1,20,4.502422,0.058788,"ns/op","16 0" +"dotty.tools.benchmarks.tuples.Apply.normal","avgt",1,20,4.230764,0.054502,"ns/op","16 5" +"dotty.tools.benchmarks.tuples.Apply.normal","avgt",1,20,4.618353,0.103361,"ns/op","16 10" +"dotty.tools.benchmarks.tuples.Apply.normal","avgt",1,20,4.356611,0.120971,"ns/op","16 15" +"dotty.tools.benchmarks.tuples.Apply.normal","avgt",1,20,4.530590,0.053178,"ns/op","21 0" +"dotty.tools.benchmarks.tuples.Apply.normal","avgt",1,20,4.212605,0.053339,"ns/op","21 5" +"dotty.tools.benchmarks.tuples.Apply.normal","avgt",1,20,4.590118,0.083453,"ns/op","21 10" +"dotty.tools.benchmarks.tuples.Apply.normal","avgt",1,20,4.239007,0.107929,"ns/op","21 15" +"dotty.tools.benchmarks.tuples.Apply.normal","avgt",1,20,3.908145,0.050698,"ns/op","21 20" +"dotty.tools.benchmarks.tuples.Apply.normal","avgt",1,20,4.236628,0.071426,"ns/op","26 0" +"dotty.tools.benchmarks.tuples.Apply.normal","avgt",1,20,4.249880,0.081843,"ns/op","26 5" +"dotty.tools.benchmarks.tuples.Apply.normal","avgt",1,20,4.237230,0.077913,"ns/op","26 10" +"dotty.tools.benchmarks.tuples.Apply.normal","avgt",1,20,4.202678,0.051050,"ns/op","26 15" +"dotty.tools.benchmarks.tuples.Apply.normal","avgt",1,20,4.221350,0.087056,"ns/op","26 20" +"dotty.tools.benchmarks.tuples.Apply.normal","avgt",1,20,4.235956,0.078817,"ns/op","26 25" +"dotty.tools.benchmarks.tuples.Apply.normal","avgt",1,20,4.212674,0.056616,"ns/op","31 0" +"dotty.tools.benchmarks.tuples.Apply.normal","avgt",1,20,4.193940,0.058910,"ns/op","31 5" +"dotty.tools.benchmarks.tuples.Apply.normal","avgt",1,20,4.190698,0.044051,"ns/op","31 10" +"dotty.tools.benchmarks.tuples.Apply.normal","avgt",1,20,4.259565,0.117652,"ns/op","31 15" +"dotty.tools.benchmarks.tuples.Apply.normal","avgt",1,20,4.256121,0.073127,"ns/op","31 20" +"dotty.tools.benchmarks.tuples.Apply.normal","avgt",1,20,4.227038,0.062038,"ns/op","31 25" +"dotty.tools.benchmarks.tuples.Apply.normal","avgt",1,20,4.220077,0.072770,"ns/op","31 30" From 11c1d216a2387220a79986c7b805bafb5365a35a Mon Sep 17 00:00:00 2001 From: Antoine Brunner Date: Wed, 2 Oct 2019 14:04:36 +0200 Subject: [PATCH 09/21] Add inputs and outputs of arrayOps benchmark --- bench-run/inputs/arrayOps.in | 1 + bench-run/outputs/arrayOps.csv | 36 ++++++++++++++++++++++++++++++++++ 2 files changed, 37 insertions(+) create mode 100644 bench-run/inputs/arrayOps.in create mode 100644 bench-run/outputs/arrayOps.csv diff --git a/bench-run/inputs/arrayOps.in b/bench-run/inputs/arrayOps.in new file mode 100644 index 000000000000..87ca4f3dfd85 --- /dev/null +++ b/bench-run/inputs/arrayOps.in @@ -0,0 +1 @@ +size:0,5,10,15,20,25,30 \ No newline at end of file diff --git a/bench-run/outputs/arrayOps.csv b/bench-run/outputs/arrayOps.csv new file mode 100644 index 000000000000..790ec38ff2c8 --- /dev/null +++ b/bench-run/outputs/arrayOps.csv @@ -0,0 +1,36 @@ +"Benchmark","Mode","Threads","Samples","Score","Score Error (99.9%)","Unit","Param: size" +"dotty.tools.benchmarks.tuples.ArrayOps.baseline","avgt",1,20,0.301287,0.004558,"ns/op",0 +"dotty.tools.benchmarks.tuples.ArrayOps.baseline","avgt",1,20,0.302665,0.004649,"ns/op",5 +"dotty.tools.benchmarks.tuples.ArrayOps.baseline","avgt",1,20,0.305479,0.006833,"ns/op",10 +"dotty.tools.benchmarks.tuples.ArrayOps.baseline","avgt",1,20,0.307480,0.006484,"ns/op",15 +"dotty.tools.benchmarks.tuples.ArrayOps.baseline","avgt",1,20,0.301941,0.003893,"ns/op",20 +"dotty.tools.benchmarks.tuples.ArrayOps.baseline","avgt",1,20,0.300659,0.003699,"ns/op",25 +"dotty.tools.benchmarks.tuples.ArrayOps.baseline","avgt",1,20,0.304128,0.006872,"ns/op",30 +"dotty.tools.benchmarks.tuples.ArrayOps.fromArray","avgt",1,20,4.807751,0.063805,"ns/op",0 +"dotty.tools.benchmarks.tuples.ArrayOps.fromArray","avgt",1,20,7.383020,0.118580,"ns/op",5 +"dotty.tools.benchmarks.tuples.ArrayOps.fromArray","avgt",1,20,9.542806,0.253861,"ns/op",10 +"dotty.tools.benchmarks.tuples.ArrayOps.fromArray","avgt",1,20,15.847258,0.496734,"ns/op",15 +"dotty.tools.benchmarks.tuples.ArrayOps.fromArray","avgt",1,20,21.553068,0.377783,"ns/op",20 +"dotty.tools.benchmarks.tuples.ArrayOps.fromArray","avgt",1,20,17.307722,0.341839,"ns/op",25 +"dotty.tools.benchmarks.tuples.ArrayOps.fromArray","avgt",1,20,19.259385,0.356215,"ns/op",30 +"dotty.tools.benchmarks.tuples.ArrayOps.fromIArray","avgt",1,20,5.133694,0.070668,"ns/op",0 +"dotty.tools.benchmarks.tuples.ArrayOps.fromIArray","avgt",1,20,7.675563,0.201592,"ns/op",5 +"dotty.tools.benchmarks.tuples.ArrayOps.fromIArray","avgt",1,20,10.634647,0.544432,"ns/op",10 +"dotty.tools.benchmarks.tuples.ArrayOps.fromIArray","avgt",1,20,15.733794,0.366517,"ns/op",15 +"dotty.tools.benchmarks.tuples.ArrayOps.fromIArray","avgt",1,20,21.311446,0.404450,"ns/op",20 +"dotty.tools.benchmarks.tuples.ArrayOps.fromIArray","avgt",1,20,5.102623,0.085603,"ns/op",25 +"dotty.tools.benchmarks.tuples.ArrayOps.fromIArray","avgt",1,20,5.118807,0.085698,"ns/op",30 +"dotty.tools.benchmarks.tuples.ArrayOps.toArray","avgt",1,20,3.258488,0.009474,"ns/op",0 +"dotty.tools.benchmarks.tuples.ArrayOps.toArray","avgt",1,20,9.559828,0.184920,"ns/op",5 +"dotty.tools.benchmarks.tuples.ArrayOps.toArray","avgt",1,20,22.830335,0.410024,"ns/op",10 +"dotty.tools.benchmarks.tuples.ArrayOps.toArray","avgt",1,20,32.244784,0.521161,"ns/op",15 +"dotty.tools.benchmarks.tuples.ArrayOps.toArray","avgt",1,20,51.550625,0.860758,"ns/op",20 +"dotty.tools.benchmarks.tuples.ArrayOps.toArray","avgt",1,20,14.909970,0.179355,"ns/op",25 +"dotty.tools.benchmarks.tuples.ArrayOps.toArray","avgt",1,20,16.811033,0.350358,"ns/op",30 +"dotty.tools.benchmarks.tuples.ArrayOps.toIArray","avgt",1,20,3.258473,0.011320,"ns/op",0 +"dotty.tools.benchmarks.tuples.ArrayOps.toIArray","avgt",1,20,9.570956,0.205092,"ns/op",5 +"dotty.tools.benchmarks.tuples.ArrayOps.toIArray","avgt",1,20,22.768285,0.405557,"ns/op",10 +"dotty.tools.benchmarks.tuples.ArrayOps.toIArray","avgt",1,20,34.880201,0.637106,"ns/op",15 +"dotty.tools.benchmarks.tuples.ArrayOps.toIArray","avgt",1,20,51.613896,0.971396,"ns/op",20 +"dotty.tools.benchmarks.tuples.ArrayOps.toIArray","avgt",1,20,3.846535,0.013833,"ns/op",25 +"dotty.tools.benchmarks.tuples.ArrayOps.toIArray","avgt",1,20,3.856808,0.019754,"ns/op",30 From c3ded4fca1c3f8a1d15f37e1e405adac2dbfe0e8 Mon Sep 17 00:00:00 2001 From: Antoine Brunner Date: Fri, 4 Oct 2019 07:35:14 +0200 Subject: [PATCH 10/21] Shorten benchmark duration --- bench-run/src/main/scala/Main.scala | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/bench-run/src/main/scala/Main.scala b/bench-run/src/main/scala/Main.scala index 6a937d4faf2b..2bb4855a2b68 100644 --- a/bench-run/src/main/scala/Main.scala +++ b/bench-run/src/main/scala/Main.scala @@ -2,9 +2,9 @@ package dotty.tools.benchmarks import org.openjdk.jmh.results.RunResult import org.openjdk.jmh.runner.Runner -import org.openjdk.jmh.runner.options.OptionsBuilder import org.openjdk.jmh.annotations._ import org.openjdk.jmh.results.format._ +import org.openjdk.jmh.runner.options._ import java.util.concurrent.TimeUnit import scala.io.Source @@ -13,7 +13,7 @@ object Bench { def main(args: Array[String]): Unit = { val (intArgs, args1) = args.span(x => try { x.toInt; true } catch { case _: Throwable => false } ) - val warmup = if (intArgs.length > 0) intArgs(0).toInt else 30 + val warmup = if (intArgs.length > 0) intArgs(0).toInt else 20 val iterations = if (intArgs.length > 1) intArgs(1).toInt else 20 val forks = if (intArgs.length > 2) intArgs(2).toInt else 1 @@ -26,7 +26,9 @@ object Bench { .mode(Mode.AverageTime) .timeUnit(TimeUnit.NANOSECONDS) .warmupIterations(warmup) + .warmupTime(TimeValue.milliseconds(750)) .measurementIterations(iterations) + .measurementTime(TimeValue.milliseconds(500)) .forks(forks) .include(benchmarks) .resultFormat(ResultFormatType.CSV) From 81849802dfea22d8eb3d0f9c5d1e395eb54e437c Mon Sep 17 00:00:00 2001 From: Antoine Brunner Date: Sat, 5 Oct 2019 12:32:08 +0200 Subject: [PATCH 11/21] Made benchmarks more consistent and complete --- bench-run/src/main/scala/tuples/Apply.scala | 11 +++---- .../src/main/scala/tuples/ArrayOps.scala | 16 ++++++---- bench-run/src/main/scala/tuples/Concat.scala | 24 +------------- bench-run/src/main/scala/tuples/Cons.scala | 11 +------ bench-run/src/main/scala/tuples/Tail.scala | 32 +++++++++++++++++++ 5 files changed, 47 insertions(+), 47 deletions(-) create mode 100644 bench-run/src/main/scala/tuples/Tail.scala diff --git a/bench-run/src/main/scala/tuples/Apply.scala b/bench-run/src/main/scala/tuples/Apply.scala index 7df788cb2efc..06ea29711bf8 100644 --- a/bench-run/src/main/scala/tuples/Apply.scala +++ b/bench-run/src/main/scala/tuples/Apply.scala @@ -21,15 +21,12 @@ class Apply { } @Benchmark - def baseline(): Unit = {} - - @Benchmark - def normal(): Any = { - tuple(index) + def tupleApply(): Any = { + DynamicTuple.dynamicApply(tuple, index) } @Benchmark - def inlined(): Any = { - DynamicTuple.dynamicApply(tuple, index) + def productElement(): Any = { + tuple.asInstanceOf[Product].productElement(index) } } diff --git a/bench-run/src/main/scala/tuples/ArrayOps.scala b/bench-run/src/main/scala/tuples/ArrayOps.scala index e14e1c996167..791bcbb5f14c 100644 --- a/bench-run/src/main/scala/tuples/ArrayOps.scala +++ b/bench-run/src/main/scala/tuples/ArrayOps.scala @@ -23,25 +23,27 @@ class ArrayOps { } @Benchmark - def baseline(): Unit = {} - - @Benchmark - def toArray(): Array[Object] = { + def tupleToArray(): Array[Object] = { DynamicTuple.dynamicToArray(tuple) } @Benchmark - def toIArray(): IArray[Object] = { + def tupleToIArray(): IArray[Object] = { DynamicTuple.dynamicToIArray(tuple) } @Benchmark - def fromArray(): Tuple = { + def tupleFromArray(): Tuple = { DynamicTuple.dynamicFromArray(array) } @Benchmark - def fromIArray(): Tuple = { + def tupleFromIArray(): Tuple = { DynamicTuple.dynamicFromIArray(iarray) } + + @Benchmark + def productToArray(): Array[Object] = { + DynamicTuple.productToArray(tuple.asInstanceOf[Product]) + } } diff --git a/bench-run/src/main/scala/tuples/Concat.scala b/bench-run/src/main/scala/tuples/Concat.scala index 63b023322d4b..4f216f3db9d6 100644 --- a/bench-run/src/main/scala/tuples/Concat.scala +++ b/bench-run/src/main/scala/tuples/Concat.scala @@ -31,34 +31,12 @@ class Concat { } @Benchmark - def baseline(): Unit = {} - - @Benchmark - def normal(): Tuple = { - tuple1 ++ tuple2 - } - - @Benchmark - def inlined(): Tuple = { + def tupleConcat(): Tuple = { DynamicTuple.dynamicConcat(tuple1, tuple2) } - // This part is here to try and measure the overhead of tranforming tuples to arrays, then concatenating - // the array, and then transforming back to a tuple - @Benchmark - def toArray(bh: Blackhole): Unit = { - bh.consume(DynamicTuple.dynamicToArray(tuple1)) - bh.consume(DynamicTuple.dynamicToArray(tuple2)) - } - @Benchmark def arrayConcat(): Array[Object] = { array1 ++ array2 } - - @Benchmark - def fromArray(bh: Blackhole): Unit = { - bh.consume(DynamicTuple.dynamicFromArray[Tuple](array1)) - bh.consume(DynamicTuple.dynamicFromArray[Tuple](array2)) - } } diff --git a/bench-run/src/main/scala/tuples/Cons.scala b/bench-run/src/main/scala/tuples/Cons.scala index c5c68efcca1c..ea65e1dcf2ee 100644 --- a/bench-run/src/main/scala/tuples/Cons.scala +++ b/bench-run/src/main/scala/tuples/Cons.scala @@ -21,19 +21,10 @@ class Cons { } @Benchmark - def baseline(): Unit = {} - - @Benchmark - def normal(): Tuple = { - "elem" *: tuple - } - - @Benchmark - def inlined(): Tuple = { + def tupleCons(): Tuple = { DynamicTuple.dynamicCons("elem", tuple) } - // This part is here to measure the performance of dong a cons on arrays directly @Benchmark def arrayCons(): Array[Object] = { DynamicTuple.cons$Array("elem", array) diff --git a/bench-run/src/main/scala/tuples/Tail.scala b/bench-run/src/main/scala/tuples/Tail.scala new file mode 100644 index 000000000000..f685759b5989 --- /dev/null +++ b/bench-run/src/main/scala/tuples/Tail.scala @@ -0,0 +1,32 @@ +package dotty.tools.benchmarks.tuples + +import org.openjdk.jmh.annotations._ +import scala.runtime.DynamicTuple + +@State(Scope.Thread) +class Tail { + @Param(Array("1")) + var size: Int = _ + var tuple: NonEmptyTuple = _ + var array: Array[Object] = _ + + @Setup + def setup(): Unit = { + tuple = "elem" *: () + + for (i <- 1 until size) + tuple = "elem" *: tuple + + array = Array.fill(size)("elem") + } + + @Benchmark + def tupleTail(): Tuple = { + DynamicTuple.dynamicTail(tuple) + } + + @Benchmark + def arrayTail(): Array[Object] = { + array.tail + } +} From 4c348c15e3df11b8670e9ebc8fcc40a2710cc53c Mon Sep 17 00:00:00 2001 From: Antoine Brunner Date: Tue, 8 Oct 2019 21:38:24 +0200 Subject: [PATCH 12/21] Modify inputs --- bench-run/inputs/apply.in | 2 +- bench-run/inputs/arrayOps.in | 2 +- bench-run/inputs/concat.in | 2 +- bench-run/inputs/cons.in | 2 +- bench-run/outputs/concat.csv | 392 +++++++++-------------------------- 5 files changed, 102 insertions(+), 298 deletions(-) mode change 100644 => 100755 bench-run/inputs/arrayOps.in mode change 100644 => 100755 bench-run/inputs/concat.in mode change 100644 => 100755 bench-run/inputs/cons.in diff --git a/bench-run/inputs/apply.in b/bench-run/inputs/apply.in index 3365fb5a87bb..905a73b537c9 100644 --- a/bench-run/inputs/apply.in +++ b/bench-run/inputs/apply.in @@ -1 +1 @@ -sizeAndIndex:1 0,6 0,6 5,11 0,11 5,11 10,16 0,16 5,16 10,16 15,21 0,21 5,21 10,21 15,21 20,26 0,26 5,26 10,26 15,26 20,26 25,31 0,31 5,31 10,31 15,31 20,31 25,31 30 \ No newline at end of file +sizeAndIndex:20 0,20 1,20 2,20 3,20 4,20 5,20 6,20 7,20 8,20 9,20 10,20 11,20 12,20 13,20 14,20 15,20 16,20 17,20 18,20 19 diff --git a/bench-run/inputs/arrayOps.in b/bench-run/inputs/arrayOps.in old mode 100644 new mode 100755 index 87ca4f3dfd85..058ba704b85b --- a/bench-run/inputs/arrayOps.in +++ b/bench-run/inputs/arrayOps.in @@ -1 +1 @@ -size:0,5,10,15,20,25,30 \ No newline at end of file +size:1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50 diff --git a/bench-run/inputs/concat.in b/bench-run/inputs/concat.in old mode 100644 new mode 100755 index 7368b1fc8685..c6e774fd9412 --- a/bench-run/inputs/concat.in +++ b/bench-run/inputs/concat.in @@ -1 +1 @@ -sizes:0 0,0 5,0 10,0 15,0 20,0 25,0 30,5 0,5 5,5 10,5 15,5 20,5 25,5 30,10 0,10 5,10 10,10 15,10 20,10 25,10 30,15 0,15 5,15 10,15 15,15 20,15 25,15 30,20 0,20 5,20 10,20 15,20 20,20 25,20 30,25 0,25 5,25 10,25 15,25 20,25 25,25 30,30 0,30 5,30 10,30 15,30 20,30 25,30 30 \ No newline at end of file +sizes:15 0,15 1,15 2,15 3,15 4,15 5,15 6,15 7,15 8,15 9,15 10,15 11,15 12,15 13,15 14,15 15,15 16,15 17,15 18,15 19,15 20,15 21,15 22,15 23,15 24,15 25,15 26,15 27,15 28,15 29,15 30,15 31,15 32,15 33,15 34,15 35,15 36,15 37,15 38,15 39,15 40,15 41,15 42,15 43,15 44,15 45,15 46,15 47,15 48,15 49,15 50 \ No newline at end of file diff --git a/bench-run/inputs/cons.in b/bench-run/inputs/cons.in old mode 100644 new mode 100755 index 87ca4f3dfd85..4555a56acbc3 --- a/bench-run/inputs/cons.in +++ b/bench-run/inputs/cons.in @@ -1 +1 @@ -size:0,5,10,15,20,25,30 \ No newline at end of file +size:0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50 diff --git a/bench-run/outputs/concat.csv b/bench-run/outputs/concat.csv index d8f32861f223..3c271b95f17f 100644 --- a/bench-run/outputs/concat.csv +++ b/bench-run/outputs/concat.csv @@ -1,295 +1,99 @@ "Benchmark","Mode","Threads","Samples","Score","Score Error (99.9%)","Unit","Param: sizes" -"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,43.488094,0.742509,"ns/op","0 0" -"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,37.246583,0.769948,"ns/op","0 5" -"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,37.821187,1.315976,"ns/op","0 10" -"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,38.490857,0.736351,"ns/op","0 15" -"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,40.290833,0.905165,"ns/op","0 20" -"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,39.535887,0.757934,"ns/op","0 25" -"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,40.654464,0.697325,"ns/op","0 30" -"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,27.289409,0.569568,"ns/op","5 0" -"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,43.301055,0.857886,"ns/op","5 5" -"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,43.521015,0.851255,"ns/op","5 10" -"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,45.573667,0.766589,"ns/op","5 15" -"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,45.770065,0.923906,"ns/op","5 20" -"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,45.759140,0.971084,"ns/op","5 25" -"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,46.450220,1.191643,"ns/op","5 30" -"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,27.438973,0.535034,"ns/op","10 0" -"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,43.526779,0.807807,"ns/op","10 5" -"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,43.829293,0.888853,"ns/op","10 10" -"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,45.641900,0.905702,"ns/op","10 15" -"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,45.723476,1.013583,"ns/op","10 20" -"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,45.421894,0.912429,"ns/op","10 25" -"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,47.630151,0.924153,"ns/op","10 30" -"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,28.162527,0.239812,"ns/op","15 0" -"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,44.569129,0.878811,"ns/op","15 5" -"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,44.829708,0.909951,"ns/op","15 10" -"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,46.800950,0.901774,"ns/op","15 15" -"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,46.581555,1.382670,"ns/op","15 20" -"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,46.787136,1.005488,"ns/op","15 25" -"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,49.795421,1.058560,"ns/op","15 30" -"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,28.334274,0.543448,"ns/op","20 0" -"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,44.566242,0.943875,"ns/op","20 5" -"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,44.697241,1.083458,"ns/op","20 10" -"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,45.990045,0.787530,"ns/op","20 15" -"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,46.861877,0.596299,"ns/op","20 20" -"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,46.928225,0.256207,"ns/op","20 25" -"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,49.276259,1.208086,"ns/op","20 30" -"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,28.614266,0.508494,"ns/op","25 0" -"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,44.440789,0.861255,"ns/op","25 5" -"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,44.812555,0.664966,"ns/op","25 10" -"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,46.748377,0.935177,"ns/op","25 15" -"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,47.663022,0.678699,"ns/op","25 20" -"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,47.467693,1.147664,"ns/op","25 25" -"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,47.103651,0.527903,"ns/op","25 30" -"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,29.837270,0.561916,"ns/op","30 0" -"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,46.168035,1.189375,"ns/op","30 5" -"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,46.167462,0.950895,"ns/op","30 10" -"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,48.683994,1.055132,"ns/op","30 15" -"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,48.795414,0.891281,"ns/op","30 20" -"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,48.152951,0.880661,"ns/op","30 25" -"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,49.933207,1.538616,"ns/op","30 30" -"dotty.tools.benchmarks.tuples.Concat.baseline","avgt",1,20,0.296916,0.002113,"ns/op","0 0" -"dotty.tools.benchmarks.tuples.Concat.baseline","avgt",1,20,0.297889,0.006059,"ns/op","0 5" -"dotty.tools.benchmarks.tuples.Concat.baseline","avgt",1,20,0.296278,0.000742,"ns/op","0 10" -"dotty.tools.benchmarks.tuples.Concat.baseline","avgt",1,20,0.296322,0.000758,"ns/op","0 15" -"dotty.tools.benchmarks.tuples.Concat.baseline","avgt",1,20,0.295653,0.000444,"ns/op","0 20" -"dotty.tools.benchmarks.tuples.Concat.baseline","avgt",1,20,0.295688,0.000749,"ns/op","0 25" -"dotty.tools.benchmarks.tuples.Concat.baseline","avgt",1,20,0.299634,0.009849,"ns/op","0 30" -"dotty.tools.benchmarks.tuples.Concat.baseline","avgt",1,20,0.296299,0.000938,"ns/op","5 0" -"dotty.tools.benchmarks.tuples.Concat.baseline","avgt",1,20,0.297702,0.004775,"ns/op","5 5" -"dotty.tools.benchmarks.tuples.Concat.baseline","avgt",1,20,0.296138,0.000323,"ns/op","5 10" -"dotty.tools.benchmarks.tuples.Concat.baseline","avgt",1,20,0.295930,0.000644,"ns/op","5 15" -"dotty.tools.benchmarks.tuples.Concat.baseline","avgt",1,20,0.296391,0.000820,"ns/op","5 20" -"dotty.tools.benchmarks.tuples.Concat.baseline","avgt",1,20,0.296541,0.000922,"ns/op","5 25" -"dotty.tools.benchmarks.tuples.Concat.baseline","avgt",1,20,0.298117,0.006964,"ns/op","5 30" -"dotty.tools.benchmarks.tuples.Concat.baseline","avgt",1,20,0.296104,0.001133,"ns/op","10 0" -"dotty.tools.benchmarks.tuples.Concat.baseline","avgt",1,20,0.295838,0.000420,"ns/op","10 5" -"dotty.tools.benchmarks.tuples.Concat.baseline","avgt",1,20,0.295459,0.000515,"ns/op","10 10" -"dotty.tools.benchmarks.tuples.Concat.baseline","avgt",1,20,0.295953,0.000451,"ns/op","10 15" -"dotty.tools.benchmarks.tuples.Concat.baseline","avgt",1,20,0.296068,0.000636,"ns/op","10 20" -"dotty.tools.benchmarks.tuples.Concat.baseline","avgt",1,20,0.296198,0.001034,"ns/op","10 25" -"dotty.tools.benchmarks.tuples.Concat.baseline","avgt",1,20,0.296534,0.001339,"ns/op","10 30" -"dotty.tools.benchmarks.tuples.Concat.baseline","avgt",1,20,0.296519,0.000608,"ns/op","15 0" -"dotty.tools.benchmarks.tuples.Concat.baseline","avgt",1,20,0.297473,0.002830,"ns/op","15 5" -"dotty.tools.benchmarks.tuples.Concat.baseline","avgt",1,20,0.296023,0.000684,"ns/op","15 10" -"dotty.tools.benchmarks.tuples.Concat.baseline","avgt",1,20,0.296294,0.000570,"ns/op","15 15" -"dotty.tools.benchmarks.tuples.Concat.baseline","avgt",1,20,0.296300,0.001330,"ns/op","15 20" -"dotty.tools.benchmarks.tuples.Concat.baseline","avgt",1,20,0.297613,0.003426,"ns/op","15 25" -"dotty.tools.benchmarks.tuples.Concat.baseline","avgt",1,20,0.298608,0.007740,"ns/op","15 30" -"dotty.tools.benchmarks.tuples.Concat.baseline","avgt",1,20,0.296764,0.003618,"ns/op","20 0" -"dotty.tools.benchmarks.tuples.Concat.baseline","avgt",1,20,0.296218,0.000292,"ns/op","20 5" -"dotty.tools.benchmarks.tuples.Concat.baseline","avgt",1,20,0.295742,0.000416,"ns/op","20 10" -"dotty.tools.benchmarks.tuples.Concat.baseline","avgt",1,20,0.296667,0.001613,"ns/op","20 15" -"dotty.tools.benchmarks.tuples.Concat.baseline","avgt",1,20,0.297131,0.001928,"ns/op","20 20" -"dotty.tools.benchmarks.tuples.Concat.baseline","avgt",1,20,0.302482,0.011770,"ns/op","20 25" -"dotty.tools.benchmarks.tuples.Concat.baseline","avgt",1,20,0.296503,0.000884,"ns/op","20 30" -"dotty.tools.benchmarks.tuples.Concat.baseline","avgt",1,20,0.295625,0.000324,"ns/op","25 0" -"dotty.tools.benchmarks.tuples.Concat.baseline","avgt",1,20,0.296373,0.001499,"ns/op","25 5" -"dotty.tools.benchmarks.tuples.Concat.baseline","avgt",1,20,0.296215,0.001193,"ns/op","25 10" -"dotty.tools.benchmarks.tuples.Concat.baseline","avgt",1,20,0.296889,0.001825,"ns/op","25 15" -"dotty.tools.benchmarks.tuples.Concat.baseline","avgt",1,20,0.299895,0.009819,"ns/op","25 20" -"dotty.tools.benchmarks.tuples.Concat.baseline","avgt",1,20,0.296156,0.000342,"ns/op","25 25" -"dotty.tools.benchmarks.tuples.Concat.baseline","avgt",1,20,0.295917,0.000888,"ns/op","25 30" -"dotty.tools.benchmarks.tuples.Concat.baseline","avgt",1,20,0.296124,0.000532,"ns/op","30 0" -"dotty.tools.benchmarks.tuples.Concat.baseline","avgt",1,20,0.297129,0.002037,"ns/op","30 5" -"dotty.tools.benchmarks.tuples.Concat.baseline","avgt",1,20,0.296278,0.003101,"ns/op","30 10" -"dotty.tools.benchmarks.tuples.Concat.baseline","avgt",1,20,0.297238,0.002289,"ns/op","30 15" -"dotty.tools.benchmarks.tuples.Concat.baseline","avgt",1,20,0.296578,0.001398,"ns/op","30 20" -"dotty.tools.benchmarks.tuples.Concat.baseline","avgt",1,20,0.296667,0.002615,"ns/op","30 25" -"dotty.tools.benchmarks.tuples.Concat.baseline","avgt",1,20,0.296790,0.001390,"ns/op","30 30" -"dotty.tools.benchmarks.tuples.Concat.fromArray","avgt",1,20,9.125775,0.026271,"ns/op","0 0" -"dotty.tools.benchmarks.tuples.Concat.fromArray","avgt",1,20,11.302720,0.305004,"ns/op","0 5" -"dotty.tools.benchmarks.tuples.Concat.fromArray","avgt",1,20,13.412848,0.380257,"ns/op","0 10" -"dotty.tools.benchmarks.tuples.Concat.fromArray","avgt",1,20,18.794902,0.375087,"ns/op","0 15" -"dotty.tools.benchmarks.tuples.Concat.fromArray","avgt",1,20,24.346368,0.345869,"ns/op","0 20" -"dotty.tools.benchmarks.tuples.Concat.fromArray","avgt",1,20,20.259839,0.458558,"ns/op","0 25" -"dotty.tools.benchmarks.tuples.Concat.fromArray","avgt",1,20,21.207446,0.401497,"ns/op","0 30" -"dotty.tools.benchmarks.tuples.Concat.fromArray","avgt",1,20,11.225935,0.167463,"ns/op","5 0" -"dotty.tools.benchmarks.tuples.Concat.fromArray","avgt",1,20,14.658921,0.287129,"ns/op","5 5" -"dotty.tools.benchmarks.tuples.Concat.fromArray","avgt",1,20,16.168293,0.366947,"ns/op","5 10" -"dotty.tools.benchmarks.tuples.Concat.fromArray","avgt",1,20,23.160395,0.439607,"ns/op","5 15" -"dotty.tools.benchmarks.tuples.Concat.fromArray","avgt",1,20,27.848175,0.466669,"ns/op","5 20" -"dotty.tools.benchmarks.tuples.Concat.fromArray","avgt",1,20,23.722687,0.722341,"ns/op","5 25" -"dotty.tools.benchmarks.tuples.Concat.fromArray","avgt",1,20,24.796975,0.429540,"ns/op","5 30" -"dotty.tools.benchmarks.tuples.Concat.fromArray","avgt",1,20,13.683153,0.222650,"ns/op","10 0" -"dotty.tools.benchmarks.tuples.Concat.fromArray","avgt",1,20,16.539849,0.563490,"ns/op","10 5" -"dotty.tools.benchmarks.tuples.Concat.fromArray","avgt",1,20,18.732598,0.538661,"ns/op","10 10" -"dotty.tools.benchmarks.tuples.Concat.fromArray","avgt",1,20,24.185286,0.548354,"ns/op","10 15" -"dotty.tools.benchmarks.tuples.Concat.fromArray","avgt",1,20,31.902459,0.709423,"ns/op","10 20" -"dotty.tools.benchmarks.tuples.Concat.fromArray","avgt",1,20,24.986563,0.934148,"ns/op","10 25" -"dotty.tools.benchmarks.tuples.Concat.fromArray","avgt",1,20,26.671230,0.564144,"ns/op","10 30" -"dotty.tools.benchmarks.tuples.Concat.fromArray","avgt",1,20,19.007867,0.297571,"ns/op","15 0" -"dotty.tools.benchmarks.tuples.Concat.fromArray","avgt",1,20,22.436590,0.432366,"ns/op","15 5" -"dotty.tools.benchmarks.tuples.Concat.fromArray","avgt",1,20,24.228573,0.568284,"ns/op","15 10" -"dotty.tools.benchmarks.tuples.Concat.fromArray","avgt",1,20,30.424745,0.706044,"ns/op","15 15" -"dotty.tools.benchmarks.tuples.Concat.fromArray","avgt",1,20,37.012855,0.380740,"ns/op","15 20" -"dotty.tools.benchmarks.tuples.Concat.fromArray","avgt",1,20,31.043667,0.628859,"ns/op","15 25" -"dotty.tools.benchmarks.tuples.Concat.fromArray","avgt",1,20,32.737919,0.569340,"ns/op","15 30" -"dotty.tools.benchmarks.tuples.Concat.fromArray","avgt",1,20,24.852247,0.289149,"ns/op","20 0" -"dotty.tools.benchmarks.tuples.Concat.fromArray","avgt",1,20,28.146332,0.577450,"ns/op","20 5" -"dotty.tools.benchmarks.tuples.Concat.fromArray","avgt",1,20,31.253027,0.469309,"ns/op","20 10" -"dotty.tools.benchmarks.tuples.Concat.fromArray","avgt",1,20,37.423641,0.624641,"ns/op","20 15" -"dotty.tools.benchmarks.tuples.Concat.fromArray","avgt",1,20,42.680919,0.672108,"ns/op","20 20" -"dotty.tools.benchmarks.tuples.Concat.fromArray","avgt",1,20,36.628155,1.062099,"ns/op","20 25" -"dotty.tools.benchmarks.tuples.Concat.fromArray","avgt",1,20,36.990993,0.807163,"ns/op","20 30" -"dotty.tools.benchmarks.tuples.Concat.fromArray","avgt",1,20,20.353774,0.779185,"ns/op","25 0" -"dotty.tools.benchmarks.tuples.Concat.fromArray","avgt",1,20,23.530520,0.659894,"ns/op","25 5" -"dotty.tools.benchmarks.tuples.Concat.fromArray","avgt",1,20,25.111842,0.476949,"ns/op","25 10" -"dotty.tools.benchmarks.tuples.Concat.fromArray","avgt",1,20,30.968435,0.706150,"ns/op","25 15" -"dotty.tools.benchmarks.tuples.Concat.fromArray","avgt",1,20,35.698730,0.627150,"ns/op","25 20" -"dotty.tools.benchmarks.tuples.Concat.fromArray","avgt",1,20,34.282418,0.619642,"ns/op","25 25" -"dotty.tools.benchmarks.tuples.Concat.fromArray","avgt",1,20,35.988278,0.560183,"ns/op","25 30" -"dotty.tools.benchmarks.tuples.Concat.fromArray","avgt",1,20,22.581618,1.121820,"ns/op","30 0" -"dotty.tools.benchmarks.tuples.Concat.fromArray","avgt",1,20,38.074565,3.093410,"ns/op","30 5" -"dotty.tools.benchmarks.tuples.Concat.fromArray","avgt",1,20,47.203330,3.738145,"ns/op","30 10" -"dotty.tools.benchmarks.tuples.Concat.fromArray","avgt",1,20,49.405073,4.497152,"ns/op","30 15" -"dotty.tools.benchmarks.tuples.Concat.fromArray","avgt",1,20,55.724223,3.532927,"ns/op","30 20" -"dotty.tools.benchmarks.tuples.Concat.fromArray","avgt",1,20,36.855198,0.955945,"ns/op","30 25" -"dotty.tools.benchmarks.tuples.Concat.fromArray","avgt",1,20,38.083469,0.622511,"ns/op","30 30" -"dotty.tools.benchmarks.tuples.Concat.inlined","avgt",1,20,3.304421,0.005108,"ns/op","0 0" -"dotty.tools.benchmarks.tuples.Concat.inlined","avgt",1,20,47.357216,0.897680,"ns/op","0 5" -"dotty.tools.benchmarks.tuples.Concat.inlined","avgt",1,20,62.355399,1.010405,"ns/op","0 10" -"dotty.tools.benchmarks.tuples.Concat.inlined","avgt",1,20,84.413852,1.642368,"ns/op","0 15" -"dotty.tools.benchmarks.tuples.Concat.inlined","avgt",1,20,101.181224,1.994020,"ns/op","0 20" -"dotty.tools.benchmarks.tuples.Concat.inlined","avgt",1,20,59.328125,1.045556,"ns/op","0 25" -"dotty.tools.benchmarks.tuples.Concat.inlined","avgt",1,20,62.845135,1.553118,"ns/op","0 30" -"dotty.tools.benchmarks.tuples.Concat.inlined","avgt",1,20,3.309582,0.008011,"ns/op","5 0" -"dotty.tools.benchmarks.tuples.Concat.inlined","avgt",1,20,48.116168,0.673419,"ns/op","5 5" -"dotty.tools.benchmarks.tuples.Concat.inlined","avgt",1,20,114.914588,1.394064,"ns/op","5 10" -"dotty.tools.benchmarks.tuples.Concat.inlined","avgt",1,20,134.845240,3.318993,"ns/op","5 15" -"dotty.tools.benchmarks.tuples.Concat.inlined","avgt",1,20,149.053137,3.871694,"ns/op","5 20" -"dotty.tools.benchmarks.tuples.Concat.inlined","avgt",1,20,73.608175,1.105263,"ns/op","5 25" -"dotty.tools.benchmarks.tuples.Concat.inlined","avgt",1,20,76.482085,1.424616,"ns/op","5 30" -"dotty.tools.benchmarks.tuples.Concat.inlined","avgt",1,20,3.311367,0.010019,"ns/op","10 0" -"dotty.tools.benchmarks.tuples.Concat.inlined","avgt",1,20,117.289535,2.607452,"ns/op","10 5" -"dotty.tools.benchmarks.tuples.Concat.inlined","avgt",1,20,87.071647,1.515470,"ns/op","10 10" -"dotty.tools.benchmarks.tuples.Concat.inlined","avgt",1,20,148.750405,3.353486,"ns/op","10 15" -"dotty.tools.benchmarks.tuples.Concat.inlined","avgt",1,20,186.524158,4.110852,"ns/op","10 20" -"dotty.tools.benchmarks.tuples.Concat.inlined","avgt",1,20,88.508318,1.838787,"ns/op","10 25" -"dotty.tools.benchmarks.tuples.Concat.inlined","avgt",1,20,92.685797,1.977909,"ns/op","10 30" -"dotty.tools.benchmarks.tuples.Concat.inlined","avgt",1,20,3.308087,0.003372,"ns/op","15 0" -"dotty.tools.benchmarks.tuples.Concat.inlined","avgt",1,20,135.583286,3.318059,"ns/op","15 5" -"dotty.tools.benchmarks.tuples.Concat.inlined","avgt",1,20,147.358734,2.326042,"ns/op","15 10" -"dotty.tools.benchmarks.tuples.Concat.inlined","avgt",1,20,112.345294,2.219790,"ns/op","15 15" -"dotty.tools.benchmarks.tuples.Concat.inlined","avgt",1,20,271.265575,4.963078,"ns/op","15 20" -"dotty.tools.benchmarks.tuples.Concat.inlined","avgt",1,20,140.849205,2.975120,"ns/op","15 25" -"dotty.tools.benchmarks.tuples.Concat.inlined","avgt",1,20,148.200149,2.875708,"ns/op","15 30" -"dotty.tools.benchmarks.tuples.Concat.inlined","avgt",1,20,3.318883,0.024977,"ns/op","20 0" -"dotty.tools.benchmarks.tuples.Concat.inlined","avgt",1,20,146.964209,2.261860,"ns/op","20 5" -"dotty.tools.benchmarks.tuples.Concat.inlined","avgt",1,20,163.339696,3.511454,"ns/op","20 10" -"dotty.tools.benchmarks.tuples.Concat.inlined","avgt",1,20,173.757103,3.301100,"ns/op","20 15" -"dotty.tools.benchmarks.tuples.Concat.inlined","avgt",1,20,157.880097,2.541304,"ns/op","20 20" -"dotty.tools.benchmarks.tuples.Concat.inlined","avgt",1,20,178.448407,3.965967,"ns/op","20 25" -"dotty.tools.benchmarks.tuples.Concat.inlined","avgt",1,20,174.165417,3.902894,"ns/op","20 30" -"dotty.tools.benchmarks.tuples.Concat.inlined","avgt",1,20,3.344564,0.077734,"ns/op","25 0" -"dotty.tools.benchmarks.tuples.Concat.inlined","avgt",1,20,74.164878,1.623216,"ns/op","25 5" -"dotty.tools.benchmarks.tuples.Concat.inlined","avgt",1,20,88.972737,1.738735,"ns/op","25 10" -"dotty.tools.benchmarks.tuples.Concat.inlined","avgt",1,20,136.007510,2.853946,"ns/op","25 15" -"dotty.tools.benchmarks.tuples.Concat.inlined","avgt",1,20,168.209235,3.229061,"ns/op","25 20" -"dotty.tools.benchmarks.tuples.Concat.inlined","avgt",1,20,88.594926,1.588265,"ns/op","25 25" -"dotty.tools.benchmarks.tuples.Concat.inlined","avgt",1,20,94.931866,1.971255,"ns/op","25 30" -"dotty.tools.benchmarks.tuples.Concat.inlined","avgt",1,20,3.365165,0.060829,"ns/op","30 0" -"dotty.tools.benchmarks.tuples.Concat.inlined","avgt",1,20,79.621535,2.312105,"ns/op","30 5" -"dotty.tools.benchmarks.tuples.Concat.inlined","avgt",1,20,93.077460,2.091564,"ns/op","30 10" -"dotty.tools.benchmarks.tuples.Concat.inlined","avgt",1,20,142.190377,3.380533,"ns/op","30 15" -"dotty.tools.benchmarks.tuples.Concat.inlined","avgt",1,20,124.057755,1.789372,"ns/op","30 20" -"dotty.tools.benchmarks.tuples.Concat.inlined","avgt",1,20,95.373623,1.744199,"ns/op","30 25" -"dotty.tools.benchmarks.tuples.Concat.inlined","avgt",1,20,100.857522,1.846925,"ns/op","30 30" -"dotty.tools.benchmarks.tuples.Concat.normal","avgt",1,20,3.310276,0.010300,"ns/op","0 0" -"dotty.tools.benchmarks.tuples.Concat.normal","avgt",1,20,46.773344,0.874571,"ns/op","0 5" -"dotty.tools.benchmarks.tuples.Concat.normal","avgt",1,20,61.516870,1.217884,"ns/op","0 10" -"dotty.tools.benchmarks.tuples.Concat.normal","avgt",1,20,79.431888,1.329849,"ns/op","0 15" -"dotty.tools.benchmarks.tuples.Concat.normal","avgt",1,20,107.332997,1.974959,"ns/op","0 20" -"dotty.tools.benchmarks.tuples.Concat.normal","avgt",1,20,59.078192,1.446891,"ns/op","0 25" -"dotty.tools.benchmarks.tuples.Concat.normal","avgt",1,20,62.280740,2.449796,"ns/op","0 30" -"dotty.tools.benchmarks.tuples.Concat.normal","avgt",1,20,3.334899,0.008474,"ns/op","5 0" -"dotty.tools.benchmarks.tuples.Concat.normal","avgt",1,20,49.513244,0.875855,"ns/op","5 5" -"dotty.tools.benchmarks.tuples.Concat.normal","avgt",1,20,116.226224,2.568176,"ns/op","5 10" -"dotty.tools.benchmarks.tuples.Concat.normal","avgt",1,20,134.193954,2.853277,"ns/op","5 15" -"dotty.tools.benchmarks.tuples.Concat.normal","avgt",1,20,147.742421,3.879051,"ns/op","5 20" -"dotty.tools.benchmarks.tuples.Concat.normal","avgt",1,20,73.906389,1.273097,"ns/op","5 25" -"dotty.tools.benchmarks.tuples.Concat.normal","avgt",1,20,76.217563,2.122772,"ns/op","5 30" -"dotty.tools.benchmarks.tuples.Concat.normal","avgt",1,20,3.307850,0.006439,"ns/op","10 0" -"dotty.tools.benchmarks.tuples.Concat.normal","avgt",1,20,116.416262,1.810332,"ns/op","10 5" -"dotty.tools.benchmarks.tuples.Concat.normal","avgt",1,20,85.687748,1.008226,"ns/op","10 10" -"dotty.tools.benchmarks.tuples.Concat.normal","avgt",1,20,147.581659,3.232372,"ns/op","10 15" -"dotty.tools.benchmarks.tuples.Concat.normal","avgt",1,20,164.979090,2.673710,"ns/op","10 20" -"dotty.tools.benchmarks.tuples.Concat.normal","avgt",1,20,89.639258,1.791888,"ns/op","10 25" -"dotty.tools.benchmarks.tuples.Concat.normal","avgt",1,20,94.112237,2.273668,"ns/op","10 30" -"dotty.tools.benchmarks.tuples.Concat.normal","avgt",1,20,3.307937,0.004650,"ns/op","15 0" -"dotty.tools.benchmarks.tuples.Concat.normal","avgt",1,20,143.074072,3.259205,"ns/op","15 5" -"dotty.tools.benchmarks.tuples.Concat.normal","avgt",1,20,158.844317,2.842224,"ns/op","15 10" -"dotty.tools.benchmarks.tuples.Concat.normal","avgt",1,20,113.146152,2.052088,"ns/op","15 15" -"dotty.tools.benchmarks.tuples.Concat.normal","avgt",1,20,269.648724,5.728181,"ns/op","15 20" -"dotty.tools.benchmarks.tuples.Concat.normal","avgt",1,20,143.029147,2.635973,"ns/op","15 25" -"dotty.tools.benchmarks.tuples.Concat.normal","avgt",1,20,147.571838,2.448285,"ns/op","15 30" -"dotty.tools.benchmarks.tuples.Concat.normal","avgt",1,20,3.302668,0.004579,"ns/op","20 0" -"dotty.tools.benchmarks.tuples.Concat.normal","avgt",1,20,145.147086,2.897344,"ns/op","20 5" -"dotty.tools.benchmarks.tuples.Concat.normal","avgt",1,20,161.965921,3.979057,"ns/op","20 10" -"dotty.tools.benchmarks.tuples.Concat.normal","avgt",1,20,183.735687,4.288038,"ns/op","20 15" -"dotty.tools.benchmarks.tuples.Concat.normal","avgt",1,20,170.631467,4.981103,"ns/op","20 20" -"dotty.tools.benchmarks.tuples.Concat.normal","avgt",1,20,170.445704,3.682283,"ns/op","20 25" -"dotty.tools.benchmarks.tuples.Concat.normal","avgt",1,20,177.384401,3.598712,"ns/op","20 30" -"dotty.tools.benchmarks.tuples.Concat.normal","avgt",1,20,3.310696,0.006222,"ns/op","25 0" -"dotty.tools.benchmarks.tuples.Concat.normal","avgt",1,20,77.474274,2.392312,"ns/op","25 5" -"dotty.tools.benchmarks.tuples.Concat.normal","avgt",1,20,88.532456,1.509054,"ns/op","25 10" -"dotty.tools.benchmarks.tuples.Concat.normal","avgt",1,20,99.986462,2.130648,"ns/op","25 15" -"dotty.tools.benchmarks.tuples.Concat.normal","avgt",1,20,169.174422,3.183760,"ns/op","25 20" -"dotty.tools.benchmarks.tuples.Concat.normal","avgt",1,20,88.879444,1.884461,"ns/op","25 25" -"dotty.tools.benchmarks.tuples.Concat.normal","avgt",1,20,95.039518,2.003521,"ns/op","25 30" -"dotty.tools.benchmarks.tuples.Concat.normal","avgt",1,20,3.307241,0.004169,"ns/op","30 0" -"dotty.tools.benchmarks.tuples.Concat.normal","avgt",1,20,77.257356,1.728100,"ns/op","30 5" -"dotty.tools.benchmarks.tuples.Concat.normal","avgt",1,20,91.369279,1.830024,"ns/op","30 10" -"dotty.tools.benchmarks.tuples.Concat.normal","avgt",1,20,107.996688,2.264439,"ns/op","30 15" -"dotty.tools.benchmarks.tuples.Concat.normal","avgt",1,20,169.600985,4.199389,"ns/op","30 20" -"dotty.tools.benchmarks.tuples.Concat.normal","avgt",1,20,95.650157,2.574563,"ns/op","30 25" -"dotty.tools.benchmarks.tuples.Concat.normal","avgt",1,20,101.311623,2.026050,"ns/op","30 30" -"dotty.tools.benchmarks.tuples.Concat.toArray","avgt",1,20,6.042699,0.246795,"ns/op","0 0" -"dotty.tools.benchmarks.tuples.Concat.toArray","avgt",1,20,12.433884,0.227740,"ns/op","0 5" -"dotty.tools.benchmarks.tuples.Concat.toArray","avgt",1,20,26.622283,0.685589,"ns/op","0 10" -"dotty.tools.benchmarks.tuples.Concat.toArray","avgt",1,20,38.947305,0.647786,"ns/op","0 15" -"dotty.tools.benchmarks.tuples.Concat.toArray","avgt",1,20,55.037695,0.913188,"ns/op","0 20" -"dotty.tools.benchmarks.tuples.Concat.toArray","avgt",1,20,15.481205,0.288231,"ns/op","0 25" -"dotty.tools.benchmarks.tuples.Concat.toArray","avgt",1,20,17.797620,0.833941,"ns/op","0 30" -"dotty.tools.benchmarks.tuples.Concat.toArray","avgt",1,20,12.979574,0.257405,"ns/op","5 0" -"dotty.tools.benchmarks.tuples.Concat.toArray","avgt",1,20,18.467440,0.384974,"ns/op","5 5" -"dotty.tools.benchmarks.tuples.Concat.toArray","avgt",1,20,69.145286,1.199418,"ns/op","5 10" -"dotty.tools.benchmarks.tuples.Concat.toArray","avgt",1,20,82.461732,1.720337,"ns/op","5 15" -"dotty.tools.benchmarks.tuples.Concat.toArray","avgt",1,20,91.054072,1.906895,"ns/op","5 20" -"dotty.tools.benchmarks.tuples.Concat.toArray","avgt",1,20,23.295773,2.008870,"ns/op","5 25" -"dotty.tools.benchmarks.tuples.Concat.toArray","avgt",1,20,23.648691,0.395570,"ns/op","5 30" -"dotty.tools.benchmarks.tuples.Concat.toArray","avgt",1,20,29.637684,1.240877,"ns/op","10 0" -"dotty.tools.benchmarks.tuples.Concat.toArray","avgt",1,20,69.401806,1.860531,"ns/op","10 5" -"dotty.tools.benchmarks.tuples.Concat.toArray","avgt",1,20,46.730533,0.664261,"ns/op","10 10" -"dotty.tools.benchmarks.tuples.Concat.toArray","avgt",1,20,95.654188,1.718551,"ns/op","10 15" -"dotty.tools.benchmarks.tuples.Concat.toArray","avgt",1,20,112.649526,1.093612,"ns/op","10 20" -"dotty.tools.benchmarks.tuples.Concat.toArray","avgt",1,20,34.731513,1.284892,"ns/op","10 25" -"dotty.tools.benchmarks.tuples.Concat.toArray","avgt",1,20,35.476735,0.755868,"ns/op","10 30" -"dotty.tools.benchmarks.tuples.Concat.toArray","avgt",1,20,38.983245,0.738978,"ns/op","15 0" -"dotty.tools.benchmarks.tuples.Concat.toArray","avgt",1,20,80.701039,1.604372,"ns/op","15 5" -"dotty.tools.benchmarks.tuples.Concat.toArray","avgt",1,20,95.146734,1.670834,"ns/op","15 10" -"dotty.tools.benchmarks.tuples.Concat.toArray","avgt",1,20,65.323085,0.783357,"ns/op","15 15" -"dotty.tools.benchmarks.tuples.Concat.toArray","avgt",1,20,203.859339,5.371899,"ns/op","15 20" -"dotty.tools.benchmarks.tuples.Concat.toArray","avgt",1,20,80.978335,2.629284,"ns/op","15 25" -"dotty.tools.benchmarks.tuples.Concat.toArray","avgt",1,20,80.895883,1.616339,"ns/op","15 30" -"dotty.tools.benchmarks.tuples.Concat.toArray","avgt",1,20,57.814495,1.105009,"ns/op","20 0" -"dotty.tools.benchmarks.tuples.Concat.toArray","avgt",1,20,94.159343,1.769930,"ns/op","20 5" -"dotty.tools.benchmarks.tuples.Concat.toArray","avgt",1,20,115.329750,2.122294,"ns/op","20 10" -"dotty.tools.benchmarks.tuples.Concat.toArray","avgt",1,20,125.925625,2.395582,"ns/op","20 15" -"dotty.tools.benchmarks.tuples.Concat.toArray","avgt",1,20,102.765100,2.448643,"ns/op","20 20" -"dotty.tools.benchmarks.tuples.Concat.toArray","avgt",1,20,109.346682,2.225351,"ns/op","20 25" -"dotty.tools.benchmarks.tuples.Concat.toArray","avgt",1,20,110.555813,2.248476,"ns/op","20 30" -"dotty.tools.benchmarks.tuples.Concat.toArray","avgt",1,20,15.762131,0.603014,"ns/op","25 0" -"dotty.tools.benchmarks.tuples.Concat.toArray","avgt",1,20,21.959613,0.824251,"ns/op","25 5" -"dotty.tools.benchmarks.tuples.Concat.toArray","avgt",1,20,34.735191,0.498401,"ns/op","25 10" -"dotty.tools.benchmarks.tuples.Concat.toArray","avgt",1,20,43.473183,0.709165,"ns/op","25 15" -"dotty.tools.benchmarks.tuples.Concat.toArray","avgt",1,20,118.175405,2.528024,"ns/op","25 20" -"dotty.tools.benchmarks.tuples.Concat.toArray","avgt",1,20,30.201730,1.093277,"ns/op","25 25" -"dotty.tools.benchmarks.tuples.Concat.toArray","avgt",1,20,31.827353,0.542522,"ns/op","25 30" -"dotty.tools.benchmarks.tuples.Concat.toArray","avgt",1,20,17.596408,0.323729,"ns/op","30 0" -"dotty.tools.benchmarks.tuples.Concat.toArray","avgt",1,20,23.788263,0.890207,"ns/op","30 5" -"dotty.tools.benchmarks.tuples.Concat.toArray","avgt",1,20,35.949717,1.013685,"ns/op","30 10" -"dotty.tools.benchmarks.tuples.Concat.toArray","avgt",1,20,44.433869,0.920946,"ns/op","30 15" -"dotty.tools.benchmarks.tuples.Concat.toArray","avgt",1,20,118.928645,2.453709,"ns/op","30 20" -"dotty.tools.benchmarks.tuples.Concat.toArray","avgt",1,20,31.861033,0.658809,"ns/op","30 25" -"dotty.tools.benchmarks.tuples.Concat.toArray","avgt",1,20,35.703868,0.803278,"ns/op","30 30" +"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,38.909750,0.738950,"ns/op","0 0" +"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,36.819358,0.152812,"ns/op","0 5" +"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,37.769272,1.342357,"ns/op","0 10" +"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,39.073530,1.396754,"ns/op","0 15" +"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,39.396242,1.421824,"ns/op","0 20" +"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,40.218793,1.726922,"ns/op","0 25" +"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,40.909185,1.635656,"ns/op","0 30" +"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,27.462873,1.081689,"ns/op","5 0" +"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,43.722235,1.858725,"ns/op","5 5" +"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,43.990633,1.774447,"ns/op","5 10" +"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,46.037318,1.994271,"ns/op","5 15" +"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,46.429481,1.752596,"ns/op","5 20" +"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,46.418024,2.339706,"ns/op","5 25" +"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,46.968397,1.993173,"ns/op","5 30" +"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,27.762324,1.158246,"ns/op","10 0" +"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,43.876421,1.707638,"ns/op","10 5" +"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,44.791006,1.748622,"ns/op","10 10" +"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,45.908456,1.768426,"ns/op","10 15" +"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,46.054821,1.808581,"ns/op","10 20" +"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,45.921642,2.131137,"ns/op","10 25" +"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,47.935142,1.879981,"ns/op","10 30" +"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,28.703250,0.960906,"ns/op","15 0" +"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,44.568368,1.730140,"ns/op","15 5" +"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,45.508810,2.113427,"ns/op","15 10" +"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,47.874149,3.477187,"ns/op","15 15" +"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,46.911064,2.087707,"ns/op","15 20" +"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,47.335409,1.793512,"ns/op","15 25" +"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,50.205048,1.725805,"ns/op","15 30" +"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,28.567219,1.113097,"ns/op","20 0" +"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,45.123565,1.968626,"ns/op","20 5" +"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,44.838262,1.813011,"ns/op","20 10" +"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,46.709481,2.072816,"ns/op","20 15" +"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,47.265058,1.186582,"ns/op","20 20" +"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,47.820445,2.163612,"ns/op","20 25" +"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,49.070700,2.052776,"ns/op","20 30" +"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,28.729753,1.040504,"ns/op","25 0" +"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,45.074065,2.137299,"ns/op","25 5" +"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,45.431560,1.872455,"ns/op","25 10" +"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,47.178522,2.124893,"ns/op","25 15" +"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,47.855962,1.500332,"ns/op","25 20" +"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,48.220386,2.382938,"ns/op","25 25" +"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,48.287068,2.164299,"ns/op","25 30" +"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,29.816870,0.962122,"ns/op","30 0" +"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,45.951214,1.530499,"ns/op","30 5" +"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,46.470978,1.920687,"ns/op","30 10" +"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,48.810173,2.063265,"ns/op","30 15" +"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,49.413701,1.730144,"ns/op","30 20" +"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,48.213797,2.416549,"ns/op","30 25" +"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,49.747754,2.456569,"ns/op","30 30" +"dotty.tools.benchmarks.tuples.Concat.tupleConcat","avgt",1,20,3.304691,0.007097,"ns/op","0 0" +"dotty.tools.benchmarks.tuples.Concat.tupleConcat","avgt",1,20,47.543050,1.662572,"ns/op","0 5" +"dotty.tools.benchmarks.tuples.Concat.tupleConcat","avgt",1,20,62.462817,1.743626,"ns/op","0 10" +"dotty.tools.benchmarks.tuples.Concat.tupleConcat","avgt",1,20,79.904105,3.126568,"ns/op","0 15" +"dotty.tools.benchmarks.tuples.Concat.tupleConcat","avgt",1,20,101.344998,3.555549,"ns/op","0 20" +"dotty.tools.benchmarks.tuples.Concat.tupleConcat","avgt",1,20,59.063976,2.283685,"ns/op","0 25" +"dotty.tools.benchmarks.tuples.Concat.tupleConcat","avgt",1,20,63.392042,2.709558,"ns/op","0 30" +"dotty.tools.benchmarks.tuples.Concat.tupleConcat","avgt",1,20,3.317980,0.020179,"ns/op","5 0" +"dotty.tools.benchmarks.tuples.Concat.tupleConcat","avgt",1,20,47.378968,1.532791,"ns/op","5 5" +"dotty.tools.benchmarks.tuples.Concat.tupleConcat","avgt",1,20,123.313153,4.442324,"ns/op","5 10" +"dotty.tools.benchmarks.tuples.Concat.tupleConcat","avgt",1,20,136.692050,5.550220,"ns/op","5 15" +"dotty.tools.benchmarks.tuples.Concat.tupleConcat","avgt",1,20,158.265492,5.657457,"ns/op","5 20" +"dotty.tools.benchmarks.tuples.Concat.tupleConcat","avgt",1,20,73.651463,3.240342,"ns/op","5 25" +"dotty.tools.benchmarks.tuples.Concat.tupleConcat","avgt",1,20,77.594386,3.172696,"ns/op","5 30" +"dotty.tools.benchmarks.tuples.Concat.tupleConcat","avgt",1,20,3.322615,0.022144,"ns/op","10 0" +"dotty.tools.benchmarks.tuples.Concat.tupleConcat","avgt",1,20,118.205921,5.312860,"ns/op","10 5" +"dotty.tools.benchmarks.tuples.Concat.tupleConcat","avgt",1,20,88.383479,3.147018,"ns/op","10 10" +"dotty.tools.benchmarks.tuples.Concat.tupleConcat","avgt",1,20,149.609022,6.238933,"ns/op","10 15" +"dotty.tools.benchmarks.tuples.Concat.tupleConcat","avgt",1,20,183.818928,6.719115,"ns/op","10 20" +"dotty.tools.benchmarks.tuples.Concat.tupleConcat","avgt",1,20,91.901040,2.109444,"ns/op","10 25" +"dotty.tools.benchmarks.tuples.Concat.tupleConcat","avgt",1,20,94.624579,3.655768,"ns/op","10 30" +"dotty.tools.benchmarks.tuples.Concat.tupleConcat","avgt",1,20,3.315289,0.018805,"ns/op","15 0" +"dotty.tools.benchmarks.tuples.Concat.tupleConcat","avgt",1,20,135.598326,5.364097,"ns/op","15 5" +"dotty.tools.benchmarks.tuples.Concat.tupleConcat","avgt",1,20,142.985946,5.606795,"ns/op","15 10" +"dotty.tools.benchmarks.tuples.Concat.tupleConcat","avgt",1,20,112.257985,4.611035,"ns/op","15 15" +"dotty.tools.benchmarks.tuples.Concat.tupleConcat","avgt",1,20,273.191448,8.190918,"ns/op","15 20" +"dotty.tools.benchmarks.tuples.Concat.tupleConcat","avgt",1,20,141.724634,4.793305,"ns/op","15 25" +"dotty.tools.benchmarks.tuples.Concat.tupleConcat","avgt",1,20,147.844540,6.074874,"ns/op","15 30" +"dotty.tools.benchmarks.tuples.Concat.tupleConcat","avgt",1,20,3.311072,0.014647,"ns/op","20 0" +"dotty.tools.benchmarks.tuples.Concat.tupleConcat","avgt",1,20,147.014190,5.872156,"ns/op","20 5" +"dotty.tools.benchmarks.tuples.Concat.tupleConcat","avgt",1,20,166.750133,6.565463,"ns/op","20 10" +"dotty.tools.benchmarks.tuples.Concat.tupleConcat","avgt",1,20,171.776098,1.679049,"ns/op","20 15" +"dotty.tools.benchmarks.tuples.Concat.tupleConcat","avgt",1,20,169.323782,5.904121,"ns/op","20 20" +"dotty.tools.benchmarks.tuples.Concat.tupleConcat","avgt",1,20,172.999232,3.614311,"ns/op","20 25" +"dotty.tools.benchmarks.tuples.Concat.tupleConcat","avgt",1,20,175.851694,7.167824,"ns/op","20 30" +"dotty.tools.benchmarks.tuples.Concat.tupleConcat","avgt",1,20,3.314175,0.018472,"ns/op","25 0" +"dotty.tools.benchmarks.tuples.Concat.tupleConcat","avgt",1,20,74.955726,3.718710,"ns/op","25 5" +"dotty.tools.benchmarks.tuples.Concat.tupleConcat","avgt",1,20,92.127105,3.890740,"ns/op","25 10" +"dotty.tools.benchmarks.tuples.Concat.tupleConcat","avgt",1,20,139.406052,11.825064,"ns/op","25 15" +"dotty.tools.benchmarks.tuples.Concat.tupleConcat","avgt",1,20,171.993213,7.954011,"ns/op","25 20" +"dotty.tools.benchmarks.tuples.Concat.tupleConcat","avgt",1,20,90.590646,3.574160,"ns/op","25 25" +"dotty.tools.benchmarks.tuples.Concat.tupleConcat","avgt",1,20,94.871603,1.402416,"ns/op","25 30" +"dotty.tools.benchmarks.tuples.Concat.tupleConcat","avgt",1,20,3.306027,0.005600,"ns/op","30 0" +"dotty.tools.benchmarks.tuples.Concat.tupleConcat","avgt",1,20,77.015210,3.415035,"ns/op","30 5" +"dotty.tools.benchmarks.tuples.Concat.tupleConcat","avgt",1,20,90.806275,3.880782,"ns/op","30 10" +"dotty.tools.benchmarks.tuples.Concat.tupleConcat","avgt",1,20,106.207263,3.900260,"ns/op","30 15" +"dotty.tools.benchmarks.tuples.Concat.tupleConcat","avgt",1,20,169.520545,6.094742,"ns/op","30 20" +"dotty.tools.benchmarks.tuples.Concat.tupleConcat","avgt",1,20,95.912146,3.732152,"ns/op","30 25" +"dotty.tools.benchmarks.tuples.Concat.tupleConcat","avgt",1,20,102.197442,3.626954,"ns/op","30 30" From 38e4fbd181811453097505e734c2b21137756c48 Mon Sep 17 00:00:00 2001 From: Antoine Brunner Date: Tue, 8 Oct 2019 21:43:05 +0200 Subject: [PATCH 13/21] Add some missing benchmarks --- bench-run/src/main/scala/tuples/ArrayOps.scala | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/bench-run/src/main/scala/tuples/ArrayOps.scala b/bench-run/src/main/scala/tuples/ArrayOps.scala index 791bcbb5f14c..bef4a99a3d46 100644 --- a/bench-run/src/main/scala/tuples/ArrayOps.scala +++ b/bench-run/src/main/scala/tuples/ArrayOps.scala @@ -5,7 +5,7 @@ import scala.runtime.DynamicTuple @State(Scope.Thread) class ArrayOps { - @Param(Array("0")) + @Param(Array("1")) var size: Int = _ var tuple: Tuple = _ var array: Array[Object] = _ @@ -46,4 +46,9 @@ class ArrayOps { def productToArray(): Array[Object] = { DynamicTuple.productToArray(tuple.asInstanceOf[Product]) } + + @Benchmark + def cloneArray(): Array[Object] = { + array.clone() + } } From a5a6fe944f17ed02115ecd7ee1dd5b9a9c73e8f6 Mon Sep 17 00:00:00 2001 From: Antoine Brunner Date: Wed, 16 Oct 2019 14:41:08 +0200 Subject: [PATCH 14/21] Add global benchmark on tuples --- .../src/main/scala/tuples/TupleOps.scala | 46 +++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 bench-run/src/main/scala/tuples/TupleOps.scala diff --git a/bench-run/src/main/scala/tuples/TupleOps.scala b/bench-run/src/main/scala/tuples/TupleOps.scala new file mode 100644 index 000000000000..a4c1d2d08ee3 --- /dev/null +++ b/bench-run/src/main/scala/tuples/TupleOps.scala @@ -0,0 +1,46 @@ +package dotty.tools.benchmarks.tuples + +import org.openjdk.jmh.annotations._ + +@State(Scope.Thread) +class TupleOps { + var tuple1: Tuple = _ + var tuple2: Tuple = _ + + @Setup + def setup(): Unit = { + tuple1 = () + for (i <- 1 until 15) + tuple1 = s"elem$i" *: tuple1 + + tuple2 = () + for (i <- 1 until 10) + tuple2 = s"elem$i" *: tuple2 + } + + def tupleFlatMap(tuple: Tuple, f: [A] => A => Tuple): Tuple = { + def tailRecFlatMap(t: Tuple, acc: Tuple): Tuple = t match { + case () => acc + case x *: rest => tailRecFlatMap(rest, acc ++ f(x)) + } + tailRecFlatMap(tuple, ()) + } + + def tupleReverse(tuple: Tuple): Tuple = { + def tailRecReverse(t: Tuple, acc: Tuple): Tuple = t match { + case () => acc + case x *: rest => tailRecReverse(rest, x *: acc) + } + tailRecReverse(tuple, ()) + } + + @Benchmark + def reverse(): Tuple = { + tupleReverse(tuple1) + } + + @Benchmark + def flatMap(): Tuple = { + tupleFlatMap(tuple2, [A] => (x: A) => (x, x)) + } +} From 05c0c954d80c85f3ced2e61a3f8fbee651a689cc Mon Sep 17 00:00:00 2001 From: Antoine Brunner Date: Thu, 17 Oct 2019 22:15:17 +0200 Subject: [PATCH 15/21] Change benchmarks input format --- bench-run/src/main/scala/Main.scala | 37 ++++++++++++++++------------- 1 file changed, 21 insertions(+), 16 deletions(-) diff --git a/bench-run/src/main/scala/Main.scala b/bench-run/src/main/scala/Main.scala index 2bb4855a2b68..ad102078b5b3 100644 --- a/bench-run/src/main/scala/Main.scala +++ b/bench-run/src/main/scala/Main.scala @@ -17,28 +17,33 @@ object Bench { val iterations = if (intArgs.length > 1) intArgs(1).toInt else 20 val forks = if (intArgs.length > 2) intArgs(2).toInt else 1 - val benchmarks = if (args1.length > 0) args1(0) else ".*" - val outputFile = if (args1.length > 2) args1(2) else "output.csv" + if (args1.isEmpty) { + println("You should specify which benchmarks to run.") + return + } var builder = new OptionsBuilder() - .shouldFailOnError(true) - .jvmArgs("-Xms2G", "-Xmx2G") - .mode(Mode.AverageTime) - .timeUnit(TimeUnit.NANOSECONDS) - .warmupIterations(warmup) - .warmupTime(TimeValue.milliseconds(750)) - .measurementIterations(iterations) - .measurementTime(TimeValue.milliseconds(500)) - .forks(forks) - .include(benchmarks) - .resultFormat(ResultFormatType.CSV) - .result(outputFile) - - if (args1.length > 1) { + .shouldFailOnError(true) + .jvmArgs("-Xms2G", "-Xmx2G") + .mode(Mode.AverageTime) + .timeUnit(TimeUnit.NANOSECONDS) + .warmupIterations(warmup) + .warmupTime(TimeValue.milliseconds(750)) + .measurementIterations(iterations) + .measurementTime(TimeValue.milliseconds(500)) + .forks(forks) + .include(args1(0)) + .resultFormat(ResultFormatType.CSV) + + if (args1.length > 1 && args1(1) != "--") { for ((param, values) <- paramsFromFile(args1(1))) builder = builder.param(param, values: _*) } + if (args1.length > 2) { + builder = builder.result(args1(2)) + } + val runner = new Runner(builder.build) // full access to all JMH features, you can also provide a custom output Format here runner.run // actually run the benchmarks } From a011faf3cbbf840daf9c132a13ba8c1a31a33f20 Mon Sep 17 00:00:00 2001 From: Antoine Brunner Date: Thu, 31 Oct 2019 16:32:46 +0100 Subject: [PATCH 16/21] Renamed the input files for consistency --- bench-run/inputs/{arrayOps.in => conversions.in} | 0 bench-run/inputs/tail.in | 1 + 2 files changed, 1 insertion(+) rename bench-run/inputs/{arrayOps.in => conversions.in} (100%) create mode 100755 bench-run/inputs/tail.in diff --git a/bench-run/inputs/arrayOps.in b/bench-run/inputs/conversions.in similarity index 100% rename from bench-run/inputs/arrayOps.in rename to bench-run/inputs/conversions.in diff --git a/bench-run/inputs/tail.in b/bench-run/inputs/tail.in new file mode 100755 index 000000000000..058ba704b85b --- /dev/null +++ b/bench-run/inputs/tail.in @@ -0,0 +1 @@ +size:1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50 From f9bbdcbaec6d28538d7c3d882a21229e9a8d0e86 Mon Sep 17 00:00:00 2001 From: Antoine Brunner Date: Mon, 11 Nov 2019 22:10:38 +0100 Subject: [PATCH 17/21] Add benchmarks for map and zip --- bench-run/inputs/map.in | 1 + bench-run/inputs/zip.in | 1 + bench-run/outputs/apply.csv | 85 ------------------- bench-run/outputs/arrayOps.csv | 36 --------- bench-run/outputs/concat.csv | 99 ----------------------- bench-run/outputs/cons.csv | 29 ------- bench-run/src/main/scala/tuples/Map.scala | 40 +++++++++ bench-run/src/main/scala/tuples/Zip.scala | 38 +++++++++ 8 files changed, 80 insertions(+), 249 deletions(-) create mode 100644 bench-run/inputs/map.in create mode 100644 bench-run/inputs/zip.in delete mode 100644 bench-run/outputs/apply.csv delete mode 100644 bench-run/outputs/arrayOps.csv delete mode 100644 bench-run/outputs/concat.csv delete mode 100644 bench-run/outputs/cons.csv create mode 100644 bench-run/src/main/scala/tuples/Map.scala create mode 100644 bench-run/src/main/scala/tuples/Zip.scala diff --git a/bench-run/inputs/map.in b/bench-run/inputs/map.in new file mode 100644 index 000000000000..4555a56acbc3 --- /dev/null +++ b/bench-run/inputs/map.in @@ -0,0 +1 @@ +size:0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50 diff --git a/bench-run/inputs/zip.in b/bench-run/inputs/zip.in new file mode 100644 index 000000000000..4555a56acbc3 --- /dev/null +++ b/bench-run/inputs/zip.in @@ -0,0 +1 @@ +size:0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50 diff --git a/bench-run/outputs/apply.csv b/bench-run/outputs/apply.csv deleted file mode 100644 index 7eb9219323cc..000000000000 --- a/bench-run/outputs/apply.csv +++ /dev/null @@ -1,85 +0,0 @@ -"Benchmark","Mode","Threads","Samples","Score","Score Error (99.9%)","Unit","Param: sizeAndIndex" -"dotty.tools.benchmarks.tuples.Apply.baseline","avgt",1,20,0.302796,0.003992,"ns/op","1 0" -"dotty.tools.benchmarks.tuples.Apply.baseline","avgt",1,20,0.302248,0.004611,"ns/op","6 0" -"dotty.tools.benchmarks.tuples.Apply.baseline","avgt",1,20,0.299675,0.004791,"ns/op","6 5" -"dotty.tools.benchmarks.tuples.Apply.baseline","avgt",1,20,0.308888,0.006956,"ns/op","11 0" -"dotty.tools.benchmarks.tuples.Apply.baseline","avgt",1,20,0.301277,0.003535,"ns/op","11 5" -"dotty.tools.benchmarks.tuples.Apply.baseline","avgt",1,20,0.300426,0.003094,"ns/op","11 10" -"dotty.tools.benchmarks.tuples.Apply.baseline","avgt",1,20,0.301387,0.002515,"ns/op","16 0" -"dotty.tools.benchmarks.tuples.Apply.baseline","avgt",1,20,0.304609,0.005275,"ns/op","16 5" -"dotty.tools.benchmarks.tuples.Apply.baseline","avgt",1,20,0.298971,0.003402,"ns/op","16 10" -"dotty.tools.benchmarks.tuples.Apply.baseline","avgt",1,20,0.302746,0.005369,"ns/op","16 15" -"dotty.tools.benchmarks.tuples.Apply.baseline","avgt",1,20,0.303780,0.004195,"ns/op","21 0" -"dotty.tools.benchmarks.tuples.Apply.baseline","avgt",1,20,0.309071,0.006855,"ns/op","21 5" -"dotty.tools.benchmarks.tuples.Apply.baseline","avgt",1,20,0.305058,0.005890,"ns/op","21 10" -"dotty.tools.benchmarks.tuples.Apply.baseline","avgt",1,20,0.300222,0.002992,"ns/op","21 15" -"dotty.tools.benchmarks.tuples.Apply.baseline","avgt",1,20,0.303375,0.005000,"ns/op","21 20" -"dotty.tools.benchmarks.tuples.Apply.baseline","avgt",1,20,0.303624,0.006801,"ns/op","26 0" -"dotty.tools.benchmarks.tuples.Apply.baseline","avgt",1,20,0.317166,0.007660,"ns/op","26 5" -"dotty.tools.benchmarks.tuples.Apply.baseline","avgt",1,20,0.302866,0.002890,"ns/op","26 10" -"dotty.tools.benchmarks.tuples.Apply.baseline","avgt",1,20,0.307574,0.006372,"ns/op","26 15" -"dotty.tools.benchmarks.tuples.Apply.baseline","avgt",1,20,0.312211,0.008439,"ns/op","26 20" -"dotty.tools.benchmarks.tuples.Apply.baseline","avgt",1,20,0.300770,0.004192,"ns/op","26 25" -"dotty.tools.benchmarks.tuples.Apply.baseline","avgt",1,20,0.313411,0.008635,"ns/op","31 0" -"dotty.tools.benchmarks.tuples.Apply.baseline","avgt",1,20,0.310805,0.007222,"ns/op","31 5" -"dotty.tools.benchmarks.tuples.Apply.baseline","avgt",1,20,0.305519,0.006882,"ns/op","31 10" -"dotty.tools.benchmarks.tuples.Apply.baseline","avgt",1,20,0.313372,0.009065,"ns/op","31 15" -"dotty.tools.benchmarks.tuples.Apply.baseline","avgt",1,20,0.303700,0.005063,"ns/op","31 20" -"dotty.tools.benchmarks.tuples.Apply.baseline","avgt",1,20,0.299757,0.002211,"ns/op","31 25" -"dotty.tools.benchmarks.tuples.Apply.baseline","avgt",1,20,0.298848,0.002455,"ns/op","31 30" -"dotty.tools.benchmarks.tuples.Apply.inlined","avgt",1,20,3.706122,0.082386,"ns/op","1 0" -"dotty.tools.benchmarks.tuples.Apply.inlined","avgt",1,20,4.206598,0.076812,"ns/op","6 0" -"dotty.tools.benchmarks.tuples.Apply.inlined","avgt",1,20,4.027952,0.109764,"ns/op","6 5" -"dotty.tools.benchmarks.tuples.Apply.inlined","avgt",1,20,4.628887,0.149810,"ns/op","11 0" -"dotty.tools.benchmarks.tuples.Apply.inlined","avgt",1,20,4.322583,0.122501,"ns/op","11 5" -"dotty.tools.benchmarks.tuples.Apply.inlined","avgt",1,20,4.260264,0.068996,"ns/op","11 10" -"dotty.tools.benchmarks.tuples.Apply.inlined","avgt",1,20,4.502691,0.046695,"ns/op","16 0" -"dotty.tools.benchmarks.tuples.Apply.inlined","avgt",1,20,4.225894,0.076483,"ns/op","16 5" -"dotty.tools.benchmarks.tuples.Apply.inlined","avgt",1,20,4.491069,0.031204,"ns/op","16 10" -"dotty.tools.benchmarks.tuples.Apply.inlined","avgt",1,20,4.179247,0.025271,"ns/op","16 15" -"dotty.tools.benchmarks.tuples.Apply.inlined","avgt",1,20,4.577740,0.095874,"ns/op","21 0" -"dotty.tools.benchmarks.tuples.Apply.inlined","avgt",1,20,4.340975,0.101002,"ns/op","21 5" -"dotty.tools.benchmarks.tuples.Apply.inlined","avgt",1,20,4.549919,0.085750,"ns/op","21 10" -"dotty.tools.benchmarks.tuples.Apply.inlined","avgt",1,20,4.220413,0.061036,"ns/op","21 15" -"dotty.tools.benchmarks.tuples.Apply.inlined","avgt",1,20,3.903558,0.058349,"ns/op","21 20" -"dotty.tools.benchmarks.tuples.Apply.inlined","avgt",1,20,4.202939,0.050177,"ns/op","26 0" -"dotty.tools.benchmarks.tuples.Apply.inlined","avgt",1,20,4.200001,0.059330,"ns/op","26 5" -"dotty.tools.benchmarks.tuples.Apply.inlined","avgt",1,20,4.198506,0.061250,"ns/op","26 10" -"dotty.tools.benchmarks.tuples.Apply.inlined","avgt",1,20,4.205208,0.041869,"ns/op","26 15" -"dotty.tools.benchmarks.tuples.Apply.inlined","avgt",1,20,4.198259,0.053616,"ns/op","26 20" -"dotty.tools.benchmarks.tuples.Apply.inlined","avgt",1,20,4.257568,0.101048,"ns/op","26 25" -"dotty.tools.benchmarks.tuples.Apply.inlined","avgt",1,20,4.225524,0.065781,"ns/op","31 0" -"dotty.tools.benchmarks.tuples.Apply.inlined","avgt",1,20,4.204335,0.041007,"ns/op","31 5" -"dotty.tools.benchmarks.tuples.Apply.inlined","avgt",1,20,4.254856,0.053846,"ns/op","31 10" -"dotty.tools.benchmarks.tuples.Apply.inlined","avgt",1,20,4.204166,0.061426,"ns/op","31 15" -"dotty.tools.benchmarks.tuples.Apply.inlined","avgt",1,20,4.253177,0.068150,"ns/op","31 20" -"dotty.tools.benchmarks.tuples.Apply.inlined","avgt",1,20,4.418300,0.109917,"ns/op","31 25" -"dotty.tools.benchmarks.tuples.Apply.inlined","avgt",1,20,4.318239,0.108614,"ns/op","31 30" -"dotty.tools.benchmarks.tuples.Apply.normal","avgt",1,20,3.631052,0.067959,"ns/op","1 0" -"dotty.tools.benchmarks.tuples.Apply.normal","avgt",1,20,4.228909,0.104045,"ns/op","6 0" -"dotty.tools.benchmarks.tuples.Apply.normal","avgt",1,20,3.956169,0.085901,"ns/op","6 5" -"dotty.tools.benchmarks.tuples.Apply.normal","avgt",1,20,4.528560,0.067650,"ns/op","11 0" -"dotty.tools.benchmarks.tuples.Apply.normal","avgt",1,20,4.267749,0.121158,"ns/op","11 5" -"dotty.tools.benchmarks.tuples.Apply.normal","avgt",1,20,4.340369,0.094560,"ns/op","11 10" -"dotty.tools.benchmarks.tuples.Apply.normal","avgt",1,20,4.502422,0.058788,"ns/op","16 0" -"dotty.tools.benchmarks.tuples.Apply.normal","avgt",1,20,4.230764,0.054502,"ns/op","16 5" -"dotty.tools.benchmarks.tuples.Apply.normal","avgt",1,20,4.618353,0.103361,"ns/op","16 10" -"dotty.tools.benchmarks.tuples.Apply.normal","avgt",1,20,4.356611,0.120971,"ns/op","16 15" -"dotty.tools.benchmarks.tuples.Apply.normal","avgt",1,20,4.530590,0.053178,"ns/op","21 0" -"dotty.tools.benchmarks.tuples.Apply.normal","avgt",1,20,4.212605,0.053339,"ns/op","21 5" -"dotty.tools.benchmarks.tuples.Apply.normal","avgt",1,20,4.590118,0.083453,"ns/op","21 10" -"dotty.tools.benchmarks.tuples.Apply.normal","avgt",1,20,4.239007,0.107929,"ns/op","21 15" -"dotty.tools.benchmarks.tuples.Apply.normal","avgt",1,20,3.908145,0.050698,"ns/op","21 20" -"dotty.tools.benchmarks.tuples.Apply.normal","avgt",1,20,4.236628,0.071426,"ns/op","26 0" -"dotty.tools.benchmarks.tuples.Apply.normal","avgt",1,20,4.249880,0.081843,"ns/op","26 5" -"dotty.tools.benchmarks.tuples.Apply.normal","avgt",1,20,4.237230,0.077913,"ns/op","26 10" -"dotty.tools.benchmarks.tuples.Apply.normal","avgt",1,20,4.202678,0.051050,"ns/op","26 15" -"dotty.tools.benchmarks.tuples.Apply.normal","avgt",1,20,4.221350,0.087056,"ns/op","26 20" -"dotty.tools.benchmarks.tuples.Apply.normal","avgt",1,20,4.235956,0.078817,"ns/op","26 25" -"dotty.tools.benchmarks.tuples.Apply.normal","avgt",1,20,4.212674,0.056616,"ns/op","31 0" -"dotty.tools.benchmarks.tuples.Apply.normal","avgt",1,20,4.193940,0.058910,"ns/op","31 5" -"dotty.tools.benchmarks.tuples.Apply.normal","avgt",1,20,4.190698,0.044051,"ns/op","31 10" -"dotty.tools.benchmarks.tuples.Apply.normal","avgt",1,20,4.259565,0.117652,"ns/op","31 15" -"dotty.tools.benchmarks.tuples.Apply.normal","avgt",1,20,4.256121,0.073127,"ns/op","31 20" -"dotty.tools.benchmarks.tuples.Apply.normal","avgt",1,20,4.227038,0.062038,"ns/op","31 25" -"dotty.tools.benchmarks.tuples.Apply.normal","avgt",1,20,4.220077,0.072770,"ns/op","31 30" diff --git a/bench-run/outputs/arrayOps.csv b/bench-run/outputs/arrayOps.csv deleted file mode 100644 index 790ec38ff2c8..000000000000 --- a/bench-run/outputs/arrayOps.csv +++ /dev/null @@ -1,36 +0,0 @@ -"Benchmark","Mode","Threads","Samples","Score","Score Error (99.9%)","Unit","Param: size" -"dotty.tools.benchmarks.tuples.ArrayOps.baseline","avgt",1,20,0.301287,0.004558,"ns/op",0 -"dotty.tools.benchmarks.tuples.ArrayOps.baseline","avgt",1,20,0.302665,0.004649,"ns/op",5 -"dotty.tools.benchmarks.tuples.ArrayOps.baseline","avgt",1,20,0.305479,0.006833,"ns/op",10 -"dotty.tools.benchmarks.tuples.ArrayOps.baseline","avgt",1,20,0.307480,0.006484,"ns/op",15 -"dotty.tools.benchmarks.tuples.ArrayOps.baseline","avgt",1,20,0.301941,0.003893,"ns/op",20 -"dotty.tools.benchmarks.tuples.ArrayOps.baseline","avgt",1,20,0.300659,0.003699,"ns/op",25 -"dotty.tools.benchmarks.tuples.ArrayOps.baseline","avgt",1,20,0.304128,0.006872,"ns/op",30 -"dotty.tools.benchmarks.tuples.ArrayOps.fromArray","avgt",1,20,4.807751,0.063805,"ns/op",0 -"dotty.tools.benchmarks.tuples.ArrayOps.fromArray","avgt",1,20,7.383020,0.118580,"ns/op",5 -"dotty.tools.benchmarks.tuples.ArrayOps.fromArray","avgt",1,20,9.542806,0.253861,"ns/op",10 -"dotty.tools.benchmarks.tuples.ArrayOps.fromArray","avgt",1,20,15.847258,0.496734,"ns/op",15 -"dotty.tools.benchmarks.tuples.ArrayOps.fromArray","avgt",1,20,21.553068,0.377783,"ns/op",20 -"dotty.tools.benchmarks.tuples.ArrayOps.fromArray","avgt",1,20,17.307722,0.341839,"ns/op",25 -"dotty.tools.benchmarks.tuples.ArrayOps.fromArray","avgt",1,20,19.259385,0.356215,"ns/op",30 -"dotty.tools.benchmarks.tuples.ArrayOps.fromIArray","avgt",1,20,5.133694,0.070668,"ns/op",0 -"dotty.tools.benchmarks.tuples.ArrayOps.fromIArray","avgt",1,20,7.675563,0.201592,"ns/op",5 -"dotty.tools.benchmarks.tuples.ArrayOps.fromIArray","avgt",1,20,10.634647,0.544432,"ns/op",10 -"dotty.tools.benchmarks.tuples.ArrayOps.fromIArray","avgt",1,20,15.733794,0.366517,"ns/op",15 -"dotty.tools.benchmarks.tuples.ArrayOps.fromIArray","avgt",1,20,21.311446,0.404450,"ns/op",20 -"dotty.tools.benchmarks.tuples.ArrayOps.fromIArray","avgt",1,20,5.102623,0.085603,"ns/op",25 -"dotty.tools.benchmarks.tuples.ArrayOps.fromIArray","avgt",1,20,5.118807,0.085698,"ns/op",30 -"dotty.tools.benchmarks.tuples.ArrayOps.toArray","avgt",1,20,3.258488,0.009474,"ns/op",0 -"dotty.tools.benchmarks.tuples.ArrayOps.toArray","avgt",1,20,9.559828,0.184920,"ns/op",5 -"dotty.tools.benchmarks.tuples.ArrayOps.toArray","avgt",1,20,22.830335,0.410024,"ns/op",10 -"dotty.tools.benchmarks.tuples.ArrayOps.toArray","avgt",1,20,32.244784,0.521161,"ns/op",15 -"dotty.tools.benchmarks.tuples.ArrayOps.toArray","avgt",1,20,51.550625,0.860758,"ns/op",20 -"dotty.tools.benchmarks.tuples.ArrayOps.toArray","avgt",1,20,14.909970,0.179355,"ns/op",25 -"dotty.tools.benchmarks.tuples.ArrayOps.toArray","avgt",1,20,16.811033,0.350358,"ns/op",30 -"dotty.tools.benchmarks.tuples.ArrayOps.toIArray","avgt",1,20,3.258473,0.011320,"ns/op",0 -"dotty.tools.benchmarks.tuples.ArrayOps.toIArray","avgt",1,20,9.570956,0.205092,"ns/op",5 -"dotty.tools.benchmarks.tuples.ArrayOps.toIArray","avgt",1,20,22.768285,0.405557,"ns/op",10 -"dotty.tools.benchmarks.tuples.ArrayOps.toIArray","avgt",1,20,34.880201,0.637106,"ns/op",15 -"dotty.tools.benchmarks.tuples.ArrayOps.toIArray","avgt",1,20,51.613896,0.971396,"ns/op",20 -"dotty.tools.benchmarks.tuples.ArrayOps.toIArray","avgt",1,20,3.846535,0.013833,"ns/op",25 -"dotty.tools.benchmarks.tuples.ArrayOps.toIArray","avgt",1,20,3.856808,0.019754,"ns/op",30 diff --git a/bench-run/outputs/concat.csv b/bench-run/outputs/concat.csv deleted file mode 100644 index 3c271b95f17f..000000000000 --- a/bench-run/outputs/concat.csv +++ /dev/null @@ -1,99 +0,0 @@ -"Benchmark","Mode","Threads","Samples","Score","Score Error (99.9%)","Unit","Param: sizes" -"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,38.909750,0.738950,"ns/op","0 0" -"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,36.819358,0.152812,"ns/op","0 5" -"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,37.769272,1.342357,"ns/op","0 10" -"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,39.073530,1.396754,"ns/op","0 15" -"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,39.396242,1.421824,"ns/op","0 20" -"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,40.218793,1.726922,"ns/op","0 25" -"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,40.909185,1.635656,"ns/op","0 30" -"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,27.462873,1.081689,"ns/op","5 0" -"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,43.722235,1.858725,"ns/op","5 5" -"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,43.990633,1.774447,"ns/op","5 10" -"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,46.037318,1.994271,"ns/op","5 15" -"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,46.429481,1.752596,"ns/op","5 20" -"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,46.418024,2.339706,"ns/op","5 25" -"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,46.968397,1.993173,"ns/op","5 30" -"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,27.762324,1.158246,"ns/op","10 0" -"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,43.876421,1.707638,"ns/op","10 5" -"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,44.791006,1.748622,"ns/op","10 10" -"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,45.908456,1.768426,"ns/op","10 15" -"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,46.054821,1.808581,"ns/op","10 20" -"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,45.921642,2.131137,"ns/op","10 25" -"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,47.935142,1.879981,"ns/op","10 30" -"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,28.703250,0.960906,"ns/op","15 0" -"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,44.568368,1.730140,"ns/op","15 5" -"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,45.508810,2.113427,"ns/op","15 10" -"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,47.874149,3.477187,"ns/op","15 15" -"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,46.911064,2.087707,"ns/op","15 20" -"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,47.335409,1.793512,"ns/op","15 25" -"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,50.205048,1.725805,"ns/op","15 30" -"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,28.567219,1.113097,"ns/op","20 0" -"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,45.123565,1.968626,"ns/op","20 5" -"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,44.838262,1.813011,"ns/op","20 10" -"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,46.709481,2.072816,"ns/op","20 15" -"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,47.265058,1.186582,"ns/op","20 20" -"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,47.820445,2.163612,"ns/op","20 25" -"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,49.070700,2.052776,"ns/op","20 30" -"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,28.729753,1.040504,"ns/op","25 0" -"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,45.074065,2.137299,"ns/op","25 5" -"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,45.431560,1.872455,"ns/op","25 10" -"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,47.178522,2.124893,"ns/op","25 15" -"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,47.855962,1.500332,"ns/op","25 20" -"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,48.220386,2.382938,"ns/op","25 25" -"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,48.287068,2.164299,"ns/op","25 30" -"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,29.816870,0.962122,"ns/op","30 0" -"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,45.951214,1.530499,"ns/op","30 5" -"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,46.470978,1.920687,"ns/op","30 10" -"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,48.810173,2.063265,"ns/op","30 15" -"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,49.413701,1.730144,"ns/op","30 20" -"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,48.213797,2.416549,"ns/op","30 25" -"dotty.tools.benchmarks.tuples.Concat.arrayConcat","avgt",1,20,49.747754,2.456569,"ns/op","30 30" -"dotty.tools.benchmarks.tuples.Concat.tupleConcat","avgt",1,20,3.304691,0.007097,"ns/op","0 0" -"dotty.tools.benchmarks.tuples.Concat.tupleConcat","avgt",1,20,47.543050,1.662572,"ns/op","0 5" -"dotty.tools.benchmarks.tuples.Concat.tupleConcat","avgt",1,20,62.462817,1.743626,"ns/op","0 10" -"dotty.tools.benchmarks.tuples.Concat.tupleConcat","avgt",1,20,79.904105,3.126568,"ns/op","0 15" -"dotty.tools.benchmarks.tuples.Concat.tupleConcat","avgt",1,20,101.344998,3.555549,"ns/op","0 20" -"dotty.tools.benchmarks.tuples.Concat.tupleConcat","avgt",1,20,59.063976,2.283685,"ns/op","0 25" -"dotty.tools.benchmarks.tuples.Concat.tupleConcat","avgt",1,20,63.392042,2.709558,"ns/op","0 30" -"dotty.tools.benchmarks.tuples.Concat.tupleConcat","avgt",1,20,3.317980,0.020179,"ns/op","5 0" -"dotty.tools.benchmarks.tuples.Concat.tupleConcat","avgt",1,20,47.378968,1.532791,"ns/op","5 5" -"dotty.tools.benchmarks.tuples.Concat.tupleConcat","avgt",1,20,123.313153,4.442324,"ns/op","5 10" -"dotty.tools.benchmarks.tuples.Concat.tupleConcat","avgt",1,20,136.692050,5.550220,"ns/op","5 15" -"dotty.tools.benchmarks.tuples.Concat.tupleConcat","avgt",1,20,158.265492,5.657457,"ns/op","5 20" -"dotty.tools.benchmarks.tuples.Concat.tupleConcat","avgt",1,20,73.651463,3.240342,"ns/op","5 25" -"dotty.tools.benchmarks.tuples.Concat.tupleConcat","avgt",1,20,77.594386,3.172696,"ns/op","5 30" -"dotty.tools.benchmarks.tuples.Concat.tupleConcat","avgt",1,20,3.322615,0.022144,"ns/op","10 0" -"dotty.tools.benchmarks.tuples.Concat.tupleConcat","avgt",1,20,118.205921,5.312860,"ns/op","10 5" -"dotty.tools.benchmarks.tuples.Concat.tupleConcat","avgt",1,20,88.383479,3.147018,"ns/op","10 10" -"dotty.tools.benchmarks.tuples.Concat.tupleConcat","avgt",1,20,149.609022,6.238933,"ns/op","10 15" -"dotty.tools.benchmarks.tuples.Concat.tupleConcat","avgt",1,20,183.818928,6.719115,"ns/op","10 20" -"dotty.tools.benchmarks.tuples.Concat.tupleConcat","avgt",1,20,91.901040,2.109444,"ns/op","10 25" -"dotty.tools.benchmarks.tuples.Concat.tupleConcat","avgt",1,20,94.624579,3.655768,"ns/op","10 30" -"dotty.tools.benchmarks.tuples.Concat.tupleConcat","avgt",1,20,3.315289,0.018805,"ns/op","15 0" -"dotty.tools.benchmarks.tuples.Concat.tupleConcat","avgt",1,20,135.598326,5.364097,"ns/op","15 5" -"dotty.tools.benchmarks.tuples.Concat.tupleConcat","avgt",1,20,142.985946,5.606795,"ns/op","15 10" -"dotty.tools.benchmarks.tuples.Concat.tupleConcat","avgt",1,20,112.257985,4.611035,"ns/op","15 15" -"dotty.tools.benchmarks.tuples.Concat.tupleConcat","avgt",1,20,273.191448,8.190918,"ns/op","15 20" -"dotty.tools.benchmarks.tuples.Concat.tupleConcat","avgt",1,20,141.724634,4.793305,"ns/op","15 25" -"dotty.tools.benchmarks.tuples.Concat.tupleConcat","avgt",1,20,147.844540,6.074874,"ns/op","15 30" -"dotty.tools.benchmarks.tuples.Concat.tupleConcat","avgt",1,20,3.311072,0.014647,"ns/op","20 0" -"dotty.tools.benchmarks.tuples.Concat.tupleConcat","avgt",1,20,147.014190,5.872156,"ns/op","20 5" -"dotty.tools.benchmarks.tuples.Concat.tupleConcat","avgt",1,20,166.750133,6.565463,"ns/op","20 10" -"dotty.tools.benchmarks.tuples.Concat.tupleConcat","avgt",1,20,171.776098,1.679049,"ns/op","20 15" -"dotty.tools.benchmarks.tuples.Concat.tupleConcat","avgt",1,20,169.323782,5.904121,"ns/op","20 20" -"dotty.tools.benchmarks.tuples.Concat.tupleConcat","avgt",1,20,172.999232,3.614311,"ns/op","20 25" -"dotty.tools.benchmarks.tuples.Concat.tupleConcat","avgt",1,20,175.851694,7.167824,"ns/op","20 30" -"dotty.tools.benchmarks.tuples.Concat.tupleConcat","avgt",1,20,3.314175,0.018472,"ns/op","25 0" -"dotty.tools.benchmarks.tuples.Concat.tupleConcat","avgt",1,20,74.955726,3.718710,"ns/op","25 5" -"dotty.tools.benchmarks.tuples.Concat.tupleConcat","avgt",1,20,92.127105,3.890740,"ns/op","25 10" -"dotty.tools.benchmarks.tuples.Concat.tupleConcat","avgt",1,20,139.406052,11.825064,"ns/op","25 15" -"dotty.tools.benchmarks.tuples.Concat.tupleConcat","avgt",1,20,171.993213,7.954011,"ns/op","25 20" -"dotty.tools.benchmarks.tuples.Concat.tupleConcat","avgt",1,20,90.590646,3.574160,"ns/op","25 25" -"dotty.tools.benchmarks.tuples.Concat.tupleConcat","avgt",1,20,94.871603,1.402416,"ns/op","25 30" -"dotty.tools.benchmarks.tuples.Concat.tupleConcat","avgt",1,20,3.306027,0.005600,"ns/op","30 0" -"dotty.tools.benchmarks.tuples.Concat.tupleConcat","avgt",1,20,77.015210,3.415035,"ns/op","30 5" -"dotty.tools.benchmarks.tuples.Concat.tupleConcat","avgt",1,20,90.806275,3.880782,"ns/op","30 10" -"dotty.tools.benchmarks.tuples.Concat.tupleConcat","avgt",1,20,106.207263,3.900260,"ns/op","30 15" -"dotty.tools.benchmarks.tuples.Concat.tupleConcat","avgt",1,20,169.520545,6.094742,"ns/op","30 20" -"dotty.tools.benchmarks.tuples.Concat.tupleConcat","avgt",1,20,95.912146,3.732152,"ns/op","30 25" -"dotty.tools.benchmarks.tuples.Concat.tupleConcat","avgt",1,20,102.197442,3.626954,"ns/op","30 30" diff --git a/bench-run/outputs/cons.csv b/bench-run/outputs/cons.csv deleted file mode 100644 index bcc9f8593f28..000000000000 --- a/bench-run/outputs/cons.csv +++ /dev/null @@ -1,29 +0,0 @@ -"Benchmark","Mode","Threads","Samples","Score","Score Error (99.9%)","Unit","Param: size" -"dotty.tools.benchmarks.tuples.Cons.arrayCons","avgt",1,20,23.593074,0.559760,"ns/op",0 -"dotty.tools.benchmarks.tuples.Cons.arrayCons","avgt",1,20,23.126002,0.348034,"ns/op",5 -"dotty.tools.benchmarks.tuples.Cons.arrayCons","avgt",1,20,22.677165,0.459156,"ns/op",10 -"dotty.tools.benchmarks.tuples.Cons.arrayCons","avgt",1,20,24.910038,0.479292,"ns/op",15 -"dotty.tools.benchmarks.tuples.Cons.arrayCons","avgt",1,20,25.165248,0.504894,"ns/op",20 -"dotty.tools.benchmarks.tuples.Cons.arrayCons","avgt",1,20,25.241252,0.416694,"ns/op",25 -"dotty.tools.benchmarks.tuples.Cons.arrayCons","avgt",1,20,27.782659,0.559301,"ns/op",30 -"dotty.tools.benchmarks.tuples.Cons.baseline","avgt",1,20,0.298321,0.006222,"ns/op",0 -"dotty.tools.benchmarks.tuples.Cons.baseline","avgt",1,20,0.296025,0.000850,"ns/op",5 -"dotty.tools.benchmarks.tuples.Cons.baseline","avgt",1,20,0.299156,0.008331,"ns/op",10 -"dotty.tools.benchmarks.tuples.Cons.baseline","avgt",1,20,0.296062,0.001481,"ns/op",15 -"dotty.tools.benchmarks.tuples.Cons.baseline","avgt",1,20,0.296046,0.001143,"ns/op",20 -"dotty.tools.benchmarks.tuples.Cons.baseline","avgt",1,20,0.308926,0.017358,"ns/op",25 -"dotty.tools.benchmarks.tuples.Cons.baseline","avgt",1,20,0.306508,0.007257,"ns/op",30 -"dotty.tools.benchmarks.tuples.Cons.inlined","avgt",1,20,4.738640,0.191935,"ns/op",0 -"dotty.tools.benchmarks.tuples.Cons.inlined","avgt",1,20,69.176006,6.155676,"ns/op",5 -"dotty.tools.benchmarks.tuples.Cons.inlined","avgt",1,20,88.832151,1.937672,"ns/op",10 -"dotty.tools.benchmarks.tuples.Cons.inlined","avgt",1,20,116.252318,2.425801,"ns/op",15 -"dotty.tools.benchmarks.tuples.Cons.inlined","avgt",1,20,87.405409,1.581465,"ns/op",20 -"dotty.tools.benchmarks.tuples.Cons.inlined","avgt",1,20,49.311543,1.774938,"ns/op",25 -"dotty.tools.benchmarks.tuples.Cons.inlined","avgt",1,20,55.203256,0.955310,"ns/op",30 -"dotty.tools.benchmarks.tuples.Cons.normal","avgt",1,20,4.739596,0.188809,"ns/op",0 -"dotty.tools.benchmarks.tuples.Cons.normal","avgt",1,20,63.384731,1.026435,"ns/op",5 -"dotty.tools.benchmarks.tuples.Cons.normal","avgt",1,20,90.589794,2.444226,"ns/op",10 -"dotty.tools.benchmarks.tuples.Cons.normal","avgt",1,20,116.843488,2.254244,"ns/op",15 -"dotty.tools.benchmarks.tuples.Cons.normal","avgt",1,20,86.216455,1.433045,"ns/op",20 -"dotty.tools.benchmarks.tuples.Cons.normal","avgt",1,20,49.051014,1.077130,"ns/op",25 -"dotty.tools.benchmarks.tuples.Cons.normal","avgt",1,20,55.671031,1.661106,"ns/op",30 diff --git a/bench-run/src/main/scala/tuples/Map.scala b/bench-run/src/main/scala/tuples/Map.scala new file mode 100644 index 000000000000..9b3807355087 --- /dev/null +++ b/bench-run/src/main/scala/tuples/Map.scala @@ -0,0 +1,40 @@ +package dotty.tools.benchmarks.tuples + +import org.openjdk.jmh.annotations._ +import scala.runtime.DynamicTuple + +@State(Scope.Thread) +class Map { + @Param(Array("0")) + var size: Int = _ + var tuple: Tuple = _ + var array: Array[Object] = _ + + @Setup + def setup(): Unit = { + tuple = () + + for (i <- 1 to size) + tuple = "elem" *: tuple + + array = Array.fill(size)("elem") + } + + def f: PolyFunction = new PolyFunction { + def apply[T](x: T): T = { + x.asInstanceOf[String].updated(0, 'a').asInstanceOf[T] + } + } + + type Id[X] = X + + @Benchmark + def tupleMap(): Tuple = { + DynamicTuple.dynamicMap[Tuple, Id](tuple, [T] => (x:T) => x.asInstanceOf[String].updated(0, 'a').asInstanceOf[T]) + } + + @Benchmark + def arrayMap(): Array[Object] = { + array.map(x => x.asInstanceOf[String].updated(0, 'a')) + } +} diff --git a/bench-run/src/main/scala/tuples/Zip.scala b/bench-run/src/main/scala/tuples/Zip.scala new file mode 100644 index 000000000000..1b95922a01f9 --- /dev/null +++ b/bench-run/src/main/scala/tuples/Zip.scala @@ -0,0 +1,38 @@ +package dotty.tools.benchmarks.tuples + +import org.openjdk.jmh.annotations._ +import scala.runtime.DynamicTuple + +@State(Scope.Thread) +class Zip { + @Param(Array("0")) + var size: Int = _ + var tuple1: Tuple = _ + var tuple2: Tuple = _ + var array1: Array[Object] = _ + var array2: Array[Object] = _ + + @Setup + def setup(): Unit = { + tuple1 = () + tuple2 = () + + for (i <- 1 to size) { + tuple1 = "el" *: tuple1 + tuple2 = "em" *: tuple2 + } + + array1 = Array.fill(size)("el") + array2 = Array.fill(size)("em") + } + + @Benchmark + def tupleZip(): Tuple = { + DynamicTuple.dynamicZip(tuple1, tuple2) + } + + @Benchmark + def arrayZip(): Array[(Object, Object)] = { + array1.zip(array2) + } +} From 358ea0e3a73abc9a97169ffe3724b36f4acc1b39 Mon Sep 17 00:00:00 2001 From: Antoine Brunner Date: Wed, 20 Nov 2019 21:33:25 +0100 Subject: [PATCH 18/21] Add help message for bench-run --- bench-run/inputs/{ => tuples}/apply.in | 0 bench-run/inputs/{ => tuples}/concat.in | 0 bench-run/inputs/{ => tuples}/cons.in | 0 bench-run/inputs/{ => tuples}/conversions.in | 0 bench-run/inputs/{ => tuples}/map.in | 0 bench-run/inputs/{ => tuples}/tail.in | 0 bench-run/inputs/{ => tuples}/zip.in | 0 bench-run/src/main/scala/Main.scala | 29 +++++++++++++++++--- 8 files changed, 25 insertions(+), 4 deletions(-) rename bench-run/inputs/{ => tuples}/apply.in (100%) rename bench-run/inputs/{ => tuples}/concat.in (100%) mode change 100755 => 100644 rename bench-run/inputs/{ => tuples}/cons.in (100%) mode change 100755 => 100644 rename bench-run/inputs/{ => tuples}/conversions.in (100%) mode change 100755 => 100644 rename bench-run/inputs/{ => tuples}/map.in (100%) rename bench-run/inputs/{ => tuples}/tail.in (100%) mode change 100755 => 100644 rename bench-run/inputs/{ => tuples}/zip.in (100%) diff --git a/bench-run/inputs/apply.in b/bench-run/inputs/tuples/apply.in similarity index 100% rename from bench-run/inputs/apply.in rename to bench-run/inputs/tuples/apply.in diff --git a/bench-run/inputs/concat.in b/bench-run/inputs/tuples/concat.in old mode 100755 new mode 100644 similarity index 100% rename from bench-run/inputs/concat.in rename to bench-run/inputs/tuples/concat.in diff --git a/bench-run/inputs/cons.in b/bench-run/inputs/tuples/cons.in old mode 100755 new mode 100644 similarity index 100% rename from bench-run/inputs/cons.in rename to bench-run/inputs/tuples/cons.in diff --git a/bench-run/inputs/conversions.in b/bench-run/inputs/tuples/conversions.in old mode 100755 new mode 100644 similarity index 100% rename from bench-run/inputs/conversions.in rename to bench-run/inputs/tuples/conversions.in diff --git a/bench-run/inputs/map.in b/bench-run/inputs/tuples/map.in similarity index 100% rename from bench-run/inputs/map.in rename to bench-run/inputs/tuples/map.in diff --git a/bench-run/inputs/tail.in b/bench-run/inputs/tuples/tail.in old mode 100755 new mode 100644 similarity index 100% rename from bench-run/inputs/tail.in rename to bench-run/inputs/tuples/tail.in diff --git a/bench-run/inputs/zip.in b/bench-run/inputs/tuples/zip.in similarity index 100% rename from bench-run/inputs/zip.in rename to bench-run/inputs/tuples/zip.in diff --git a/bench-run/src/main/scala/Main.scala b/bench-run/src/main/scala/Main.scala index ad102078b5b3..f0db635887d6 100644 --- a/bench-run/src/main/scala/Main.scala +++ b/bench-run/src/main/scala/Main.scala @@ -11,6 +11,11 @@ import scala.io.Source object Bench { def main(args: Array[String]): Unit = { + if (args.contains("--help")) { + printUsage() + return + } + val (intArgs, args1) = args.span(x => try { x.toInt; true } catch { case _: Throwable => false } ) val warmup = if (intArgs.length > 0) intArgs(0).toInt else 20 @@ -18,7 +23,8 @@ object Bench { val forks = if (intArgs.length > 2) intArgs(2).toInt else 1 if (args1.isEmpty) { - println("You should specify which benchmarks to run.") + println("Error: no benchmark was specified.") + printUsage() return } @@ -36,7 +42,7 @@ object Bench { .resultFormat(ResultFormatType.CSV) if (args1.length > 1 && args1(1) != "--") { - for ((param, values) <- paramsFromFile(args1(1))) + for ((param, values) <- paramsFromFile("inputs/" ++ args1(1))) builder = builder.param(param, values: _*) } @@ -44,8 +50,8 @@ object Bench { builder = builder.result(args1(2)) } - val runner = new Runner(builder.build) // full access to all JMH features, you can also provide a custom output Format here - runner.run // actually run the benchmarks + val runner = new Runner(builder.build) + runner.run } def paramsFromFile(file: String): Array[(String, Array[String])] = { @@ -54,4 +60,19 @@ object Bench { (param, values split ',') } } + + def printUsage(): Unit = { + println() + println("Usage:") + println() + println("dotty-bench-run/jmh:run [] [] [] [|--] []") + println() + println("warmup: warmup iterations. defaults to 20.") + println("iterations: benchmark iterations. defaults to 20.") + println("forks: number of forks. defaults to 1.") + println("regexp: regular expression that selects which benchmarks to run.") + println("input: input vector file. each line should have format \': \'") + println("output: output file for the results of benchmarks.") + println() + } } From 26b98992e161a567c0312eb6701724c9c57b0f12 Mon Sep 17 00:00:00 2001 From: Antoine Brunner Date: Thu, 21 Nov 2019 08:17:46 +0100 Subject: [PATCH 19/21] Revert some unwanted changes, preparing for PR --- bench/src/main/scala/Benchmarks.scala | 1 + library/src/scala/runtime/DynamicTuple.scala | 9 +++------ 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/bench/src/main/scala/Benchmarks.scala b/bench/src/main/scala/Benchmarks.scala index 86b967762fb6..779579cd1c6b 100644 --- a/bench/src/main/scala/Benchmarks.scala +++ b/bench/src/main/scala/Benchmarks.scala @@ -30,6 +30,7 @@ object Bench { val iterations = if (intArgs.length > 1) intArgs(1).toInt else 20 val forks = if (intArgs.length > 2) intArgs(2).toInt else 1 + import File.{ separator => sep } val args2 = args1.map { arg => diff --git a/library/src/scala/runtime/DynamicTuple.scala b/library/src/scala/runtime/DynamicTuple.scala index 53d44f75d449..ae75f133a5c1 100644 --- a/library/src/scala/runtime/DynamicTuple.scala +++ b/library/src/scala/runtime/DynamicTuple.scala @@ -257,12 +257,9 @@ object DynamicTuple { ).asInstanceOf[Zip[This, T2]] } - def dynamicMap[This <: Tuple, F[_]](self: This, f: [t] => t => F[t]): Map[This, F] = (self: Any) match { - case self: Unit => ().asInstanceOf[Map[This, F]] - case _ => - Tuple.fromArray(self.asInstanceOf[Product].productIterator.map(f(_)).toArray) // TODO use toIArray of Object to avoid double/triple array copy - .asInstanceOf[Map[This, F]] - } + def dynamicMap[This <: Tuple, F[_]](self: This, f: [t] => t => F[t]): Map[This, F] = + Tuple.fromArray(self.asInstanceOf[Product].productIterator.map(f(_)).toArray) // TODO use toIArray of Object to avoid double/triple array copy + .asInstanceOf[Map[This, F]] def consIterator(head: Any, tail: Tuple): Iterator[Any] = Iterator.single(head) ++ tail.asInstanceOf[Product].productIterator From 8635f1de15f9fb36496758632ffd477bbca7178b Mon Sep 17 00:00:00 2001 From: Antoine Brunner Date: Thu, 21 Nov 2019 15:29:53 +0100 Subject: [PATCH 20/21] Change what was suggested in PR comments --- .../main/scala/{ => dotty/tools/benchmarks}/Main.scala | 9 ++++++--- .../{ => dotty/tools/benchmarks}/tuples/Apply.scala | 0 .../{ => dotty/tools/benchmarks}/tuples/ArrayOps.scala | 0 .../{ => dotty/tools/benchmarks}/tuples/Concat.scala | 0 .../scala/{ => dotty/tools/benchmarks}/tuples/Cons.scala | 0 .../scala/{ => dotty/tools/benchmarks}/tuples/Map.scala | 0 .../scala/{ => dotty/tools/benchmarks}/tuples/Tail.scala | 0 .../{ => dotty/tools/benchmarks}/tuples/TupleOps.scala | 0 .../scala/{ => dotty/tools/benchmarks}/tuples/Zip.scala | 0 9 files changed, 6 insertions(+), 3 deletions(-) rename bench-run/src/main/scala/{ => dotty/tools/benchmarks}/Main.scala (91%) rename bench-run/src/main/scala/{ => dotty/tools/benchmarks}/tuples/Apply.scala (100%) rename bench-run/src/main/scala/{ => dotty/tools/benchmarks}/tuples/ArrayOps.scala (100%) rename bench-run/src/main/scala/{ => dotty/tools/benchmarks}/tuples/Concat.scala (100%) rename bench-run/src/main/scala/{ => dotty/tools/benchmarks}/tuples/Cons.scala (100%) rename bench-run/src/main/scala/{ => dotty/tools/benchmarks}/tuples/Map.scala (100%) rename bench-run/src/main/scala/{ => dotty/tools/benchmarks}/tuples/Tail.scala (100%) rename bench-run/src/main/scala/{ => dotty/tools/benchmarks}/tuples/TupleOps.scala (100%) rename bench-run/src/main/scala/{ => dotty/tools/benchmarks}/tuples/Zip.scala (100%) diff --git a/bench-run/src/main/scala/Main.scala b/bench-run/src/main/scala/dotty/tools/benchmarks/Main.scala similarity index 91% rename from bench-run/src/main/scala/Main.scala rename to bench-run/src/main/scala/dotty/tools/benchmarks/Main.scala index f0db635887d6..122dd0ce296d 100644 --- a/bench-run/src/main/scala/Main.scala +++ b/bench-run/src/main/scala/dotty/tools/benchmarks/Main.scala @@ -18,9 +18,12 @@ object Bench { val (intArgs, args1) = args.span(x => try { x.toInt; true } catch { case _: Throwable => false } ) - val warmup = if (intArgs.length > 0) intArgs(0).toInt else 20 - val iterations = if (intArgs.length > 1) intArgs(1).toInt else 20 - val forks = if (intArgs.length > 2) intArgs(2).toInt else 1 + def getIntArg(i: Int, default: Int): Int = + if (intArgs.length > i) intArgs(i).toInt else default + + val warmup = getIntArg(0, 20) + val iterations = getIntArg(1, 20) + val forks = getIntArg(2, 1) if (args1.isEmpty) { println("Error: no benchmark was specified.") diff --git a/bench-run/src/main/scala/tuples/Apply.scala b/bench-run/src/main/scala/dotty/tools/benchmarks/tuples/Apply.scala similarity index 100% rename from bench-run/src/main/scala/tuples/Apply.scala rename to bench-run/src/main/scala/dotty/tools/benchmarks/tuples/Apply.scala diff --git a/bench-run/src/main/scala/tuples/ArrayOps.scala b/bench-run/src/main/scala/dotty/tools/benchmarks/tuples/ArrayOps.scala similarity index 100% rename from bench-run/src/main/scala/tuples/ArrayOps.scala rename to bench-run/src/main/scala/dotty/tools/benchmarks/tuples/ArrayOps.scala diff --git a/bench-run/src/main/scala/tuples/Concat.scala b/bench-run/src/main/scala/dotty/tools/benchmarks/tuples/Concat.scala similarity index 100% rename from bench-run/src/main/scala/tuples/Concat.scala rename to bench-run/src/main/scala/dotty/tools/benchmarks/tuples/Concat.scala diff --git a/bench-run/src/main/scala/tuples/Cons.scala b/bench-run/src/main/scala/dotty/tools/benchmarks/tuples/Cons.scala similarity index 100% rename from bench-run/src/main/scala/tuples/Cons.scala rename to bench-run/src/main/scala/dotty/tools/benchmarks/tuples/Cons.scala diff --git a/bench-run/src/main/scala/tuples/Map.scala b/bench-run/src/main/scala/dotty/tools/benchmarks/tuples/Map.scala similarity index 100% rename from bench-run/src/main/scala/tuples/Map.scala rename to bench-run/src/main/scala/dotty/tools/benchmarks/tuples/Map.scala diff --git a/bench-run/src/main/scala/tuples/Tail.scala b/bench-run/src/main/scala/dotty/tools/benchmarks/tuples/Tail.scala similarity index 100% rename from bench-run/src/main/scala/tuples/Tail.scala rename to bench-run/src/main/scala/dotty/tools/benchmarks/tuples/Tail.scala diff --git a/bench-run/src/main/scala/tuples/TupleOps.scala b/bench-run/src/main/scala/dotty/tools/benchmarks/tuples/TupleOps.scala similarity index 100% rename from bench-run/src/main/scala/tuples/TupleOps.scala rename to bench-run/src/main/scala/dotty/tools/benchmarks/tuples/TupleOps.scala diff --git a/bench-run/src/main/scala/tuples/Zip.scala b/bench-run/src/main/scala/dotty/tools/benchmarks/tuples/Zip.scala similarity index 100% rename from bench-run/src/main/scala/tuples/Zip.scala rename to bench-run/src/main/scala/dotty/tools/benchmarks/tuples/Zip.scala From e14f0b9a54b7347b4fc6430043f95645c0ac0c0f Mon Sep 17 00:00:00 2001 From: Antoine Brunner Date: Wed, 4 Dec 2019 08:43:20 +0100 Subject: [PATCH 21/21] Fix rebase issue --- library/src/scala/runtime/DynamicTuple.scala | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/library/src/scala/runtime/DynamicTuple.scala b/library/src/scala/runtime/DynamicTuple.scala index ae75f133a5c1..53d44f75d449 100644 --- a/library/src/scala/runtime/DynamicTuple.scala +++ b/library/src/scala/runtime/DynamicTuple.scala @@ -257,9 +257,12 @@ object DynamicTuple { ).asInstanceOf[Zip[This, T2]] } - def dynamicMap[This <: Tuple, F[_]](self: This, f: [t] => t => F[t]): Map[This, F] = - Tuple.fromArray(self.asInstanceOf[Product].productIterator.map(f(_)).toArray) // TODO use toIArray of Object to avoid double/triple array copy - .asInstanceOf[Map[This, F]] + def dynamicMap[This <: Tuple, F[_]](self: This, f: [t] => t => F[t]): Map[This, F] = (self: Any) match { + case self: Unit => ().asInstanceOf[Map[This, F]] + case _ => + Tuple.fromArray(self.asInstanceOf[Product].productIterator.map(f(_)).toArray) // TODO use toIArray of Object to avoid double/triple array copy + .asInstanceOf[Map[This, F]] + } def consIterator(head: Any, tail: Tuple): Iterator[Any] = Iterator.single(head) ++ tail.asInstanceOf[Product].productIterator