aboutsummaryrefslogtreecommitdiff
path: root/benchmark
diff options
context:
space:
mode:
Diffstat (limited to 'benchmark')
-rw-r--r--benchmark/src/main/scala/firrtl/benchmark/hot/SerializationBenchmark.scala40
1 files changed, 40 insertions, 0 deletions
diff --git a/benchmark/src/main/scala/firrtl/benchmark/hot/SerializationBenchmark.scala b/benchmark/src/main/scala/firrtl/benchmark/hot/SerializationBenchmark.scala
new file mode 100644
index 00000000..e6ef04ec
--- /dev/null
+++ b/benchmark/src/main/scala/firrtl/benchmark/hot/SerializationBenchmark.scala
@@ -0,0 +1,40 @@
+// See LICENSE for license details.
+package firrtl.benchmark.hot
+
+import firrtl.benchmark.util._
+import firrtl.ir.Serializer
+
+object SerializationBenchmark extends App {
+ val inputFile = args(0)
+ val warmup = args(1).toInt
+ val runs = args(2).toInt
+ val select = if(args.length > 3) args(3) else "o"
+
+ val input = filenameToCircuit(inputFile)
+
+ if(select == "n") {
+ println("Benchmarking new Serializer.serialize")
+ firrtl.benchmark.hot.util.benchmark(warmup, runs)(Serializer.serialize(input))
+ } else if(select == "o") {
+ println("Benchmarking legacy serialization")
+ firrtl.benchmark.hot.util.benchmark(warmup, runs)(input.serialize)
+ } else if(select.startsWith("test")) {
+ println("Testing the new serialization against the old one")
+ val o = input.serialize.split('\n').filterNot(_.trim.isEmpty)
+ val n = Serializer.serialize(input).split('\n').filterNot(_.trim.isEmpty)
+ val silent = select.endsWith("silent")
+
+ println(s"Old lines: ${o.length}")
+ println(s"New lines: ${n.length}")
+ o.zip(n).zipWithIndex.foreach { case ((ol, nl), ii) =>
+ if(ol != nl) {
+ println(s"❌@$ii OLD: |$ol|")
+ println(s"❌@$ii NEW: |$nl|")
+ throw new RuntimeException()
+ } else if(!silent) {
+ println(s"✅ |$ol")
+ }
+ }
+
+ }
+}