diff --git a/sjsonnet/src-native/sjsonnet/NativeOutputStream.scala b/sjsonnet/src-native/sjsonnet/NativeOutputStream.scala index 45d28ebb..d8a85ea4 100644 --- a/sjsonnet/src-native/sjsonnet/NativeOutputStream.scala +++ b/sjsonnet/src-native/sjsonnet/NativeOutputStream.scala @@ -13,6 +13,8 @@ import scala.scalanative.unsigned._ * Uses stdio.fwrite which has internal C library buffering, avoiding per-call syscall overhead. */ class NativeOutputStream(file: Ptr[FILE]) extends OutputStream { + stdio.setvbuf(file, null, stdio._IOFBF, NativeOutputStream.BufferSize.toUSize) + override def write(b: Int): Unit = stdio.fputc(b, file) @@ -27,3 +29,7 @@ class NativeOutputStream(file: Ptr[FILE]) extends OutputStream { override def close(): Unit = flush() } + +object NativeOutputStream { + private final val BufferSize = 256 * 1024 +}