aboutsummaryrefslogtreecommitdiff
path: root/benchmark/src/main
diff options
context:
space:
mode:
Diffstat (limited to 'benchmark/src/main')
-rw-r--r--benchmark/src/main/scala/firrtl/benchmark/hot/TransformBenchmark.scala27
-rw-r--r--benchmark/src/main/scala/firrtl/benchmark/hot/util/package.scala1
2 files changed, 28 insertions, 0 deletions
diff --git a/benchmark/src/main/scala/firrtl/benchmark/hot/TransformBenchmark.scala b/benchmark/src/main/scala/firrtl/benchmark/hot/TransformBenchmark.scala
new file mode 100644
index 00000000..05b759c6
--- /dev/null
+++ b/benchmark/src/main/scala/firrtl/benchmark/hot/TransformBenchmark.scala
@@ -0,0 +1,27 @@
+// See LICENSE for license details.
+
+package firrtl
+package benchmark
+package hot
+
+import firrtl._
+import firrtl.passes.LowerTypes
+import firrtl.stage.TransformManager
+
+import firrtl.benchmark.util._
+
+abstract class TransformBenchmark(factory: () => Transform) extends App {
+ val inputFile = args(0)
+ val warmup = args(1).toInt
+ val runs = args(2).toInt
+
+ val input = filenameToCircuit(inputFile)
+ val inputState = CircuitState(input, ChirrtlForm)
+
+ val manager = new TransformManager(factory().prerequisites)
+ val preState = manager.execute(inputState)
+
+ hot.util.benchmark(warmup, runs)(factory().transform(preState))
+}
+
+object LowerTypesBenchmark extends TransformBenchmark(() => LowerTypes)
diff --git a/benchmark/src/main/scala/firrtl/benchmark/hot/util/package.scala b/benchmark/src/main/scala/firrtl/benchmark/hot/util/package.scala
index c05b8359..911bd03a 100644
--- a/benchmark/src/main/scala/firrtl/benchmark/hot/util/package.scala
+++ b/benchmark/src/main/scala/firrtl/benchmark/hot/util/package.scala
@@ -15,6 +15,7 @@ package object util {
// Benchmark
val times: Array[Double] = Array.fill(nRun)(0.0)
for (i <- 0 until nRun) {
+ System.gc
val (t, res) = time(f)
times(i) = t
println(f"Benchmark run $i took $t%.1f ms")