Skip to content

Commit 4c014e0

Browse files
committed
Add the benchmark of MessageBufferInput#reset
1 parent 9f23d28 commit 4c014e0

File tree

1 file changed

+38
-1
lines changed

1 file changed

+38
-1
lines changed

msgpack-core/src/test/scala/org/msgpack/core/MessageUnpackerTest.scala

Lines changed: 38 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import java.io.{EOFException, ByteArrayInputStream, ByteArrayOutputStream}
44
import scala.util.Random
55
import org.msgpack.core.buffer.{MessageBuffer, MessageBufferInput, OutputStreamBufferOutput, ArrayBufferInput}
66
import org.msgpack.value.ValueType
7+
import xerial.core.io.IOUtil
78

89
/**
910
* Created on 2014/05/07.
@@ -529,6 +530,42 @@ class MessageUnpackerTest extends MessagePackSpec {
529530

530531
}
531532

532-
}
533+
// TODO: change tag 'ignore' to 'in'
534+
"improve the performance via reset method" taggedAs("reset") ignore {
535+
536+
val out = new ByteArrayOutputStream
537+
val packer = MessagePackFactory.newDefaultPacker(out)
538+
packer.packInt(0)
539+
packer.flush
540+
val arr = out.toByteArray
541+
542+
val N = 1000
543+
val t = time("unpacker", repeat = 10) {
544+
block("no-buffer-reset") {
545+
IOUtil.withResource(MessagePackFactory.newDefaultUnpacker(arr)) { unpacker =>
546+
for (i <- 0 until N) {
547+
val buf = new ArrayBufferInput(arr)
548+
unpacker.reset(buf)
549+
unpacker.unpackInt
550+
unpacker.close
551+
}
552+
}
553+
}
533554

555+
block("buffer-reset") {
556+
IOUtil.withResource(MessagePackFactory.newDefaultUnpacker(arr)) { unpacker =>
557+
val buf = new ArrayBufferInput(arr)
558+
for (i <- 0 until N) {
559+
buf.reset(arr)
560+
unpacker.reset(buf)
561+
unpacker.unpackInt
562+
unpacker.close
563+
}
564+
}
565+
}
566+
}
567+
568+
t("buffer-reset").averageWithoutMinMax should be <= t("no-buffer-reset").averageWithoutMinMax
569+
}
570+
}
534571
}

0 commit comments

Comments
 (0)