diff options
| author | Jack Koenig | 2020-09-30 11:20:40 -0700 |
|---|---|---|
| committer | GitHub | 2020-09-30 11:20:40 -0700 |
| commit | 8657f419852b48b40c29e79b036006ab8a0a3b2c (patch) | |
| tree | a949389f6ade4cdac09a9902d5c5fb5370b415bd | |
| parent | 9038d89c38ca9ecf6ed702cd36a38cbef8652c8c (diff) | |
Speed up writing CustomFileEmission with buffering (#1906)
Also speed up common case of Array[Byte]
| -rw-r--r-- | src/main/scala/firrtl/options/phases/WriteOutputAnnotations.scala | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/src/main/scala/firrtl/options/phases/WriteOutputAnnotations.scala b/src/main/scala/firrtl/options/phases/WriteOutputAnnotations.scala index 54f0951f..0e26a5f7 100644 --- a/src/main/scala/firrtl/options/phases/WriteOutputAnnotations.scala +++ b/src/main/scala/firrtl/options/phases/WriteOutputAnnotations.scala @@ -6,7 +6,7 @@ import firrtl.AnnotationSeq import firrtl.annotations.{Annotation, DeletedAnnotation, JsonProtocol} import firrtl.options.{CustomFileEmission, Dependency, Phase, PhaseException, StageOptions, Unserializable, Viewer} -import java.io.{File, FileOutputStream, PrintWriter} +import java.io.{BufferedOutputStream, File, FileOutputStream, PrintWriter} import scala.collection.mutable @@ -37,8 +37,11 @@ class WriteOutputAnnotations extends Phase { filesWritten.get(canonical) match { case None => - val w = new FileOutputStream(filename) - a.getBytes.foreach(w.write(_)) + val w = new BufferedOutputStream(new FileOutputStream(filename)) + a.getBytes match { + case arr: mutable.WrappedArray[Byte] => w.write(arr.array.asInstanceOf[Array[Byte]]) + case other => other.foreach(w.write(_)) + } w.close() filesWritten(canonical) = a case Some(first) => |
