summaryrefslogtreecommitdiff
path: root/benchmark/src/jmh/kotlin/kotlinx/benchmarks/json/JacksonComparisonBenchmark.kt
diff options
context:
space:
mode:
Diffstat (limited to 'benchmark/src/jmh/kotlin/kotlinx/benchmarks/json/JacksonComparisonBenchmark.kt')
-rw-r--r--benchmark/src/jmh/kotlin/kotlinx/benchmarks/json/JacksonComparisonBenchmark.kt28
1 files changed, 28 insertions, 0 deletions
diff --git a/benchmark/src/jmh/kotlin/kotlinx/benchmarks/json/JacksonComparisonBenchmark.kt b/benchmark/src/jmh/kotlin/kotlinx/benchmarks/json/JacksonComparisonBenchmark.kt
index b8125001..d162418c 100644
--- a/benchmark/src/jmh/kotlin/kotlinx/benchmarks/json/JacksonComparisonBenchmark.kt
+++ b/benchmark/src/jmh/kotlin/kotlinx/benchmarks/json/JacksonComparisonBenchmark.kt
@@ -4,7 +4,12 @@ import com.fasterxml.jackson.databind.*
import com.fasterxml.jackson.module.kotlin.*
import kotlinx.serialization.*
import kotlinx.serialization.json.*
+import kotlinx.serialization.json.okio.encodeToBufferedSink
+import okio.blackholeSink
+import okio.buffer
import org.openjdk.jmh.annotations.*
+import java.io.ByteArrayInputStream
+import java.io.OutputStream
import java.util.concurrent.*
@Warmup(iterations = 7, time = 1)
@@ -63,7 +68,15 @@ open class JacksonComparisonBenchmark {
cookies = "_ga=GA1.2.971852807.1546968515"
)
+ private val devNullSink = blackholeSink().buffer()
+ private val devNullStream = object : OutputStream() {
+ override fun write(b: Int) {}
+ override fun write(b: ByteArray) {}
+ override fun write(b: ByteArray, off: Int, len: Int) {}
+ }
+
private val stringData = Json.encodeToString(DefaultPixelEvent.serializer(), data)
+ private val utf8BytesData = stringData.toByteArray()
@Serializable
private class SmallDataClass(val id: Int, val name: String)
@@ -83,12 +96,27 @@ open class JacksonComparisonBenchmark {
fun kotlinToString(): String = Json.encodeToString(DefaultPixelEvent.serializer(), data)
@Benchmark
+ fun kotlinToStream() = Json.encodeToStream(DefaultPixelEvent.serializer(), data, devNullStream)
+
+ @Benchmark
+ fun kotlinFromStream() = Json.decodeFromStream(DefaultPixelEvent.serializer(), ByteArrayInputStream(utf8BytesData))
+
+ @Benchmark
+ fun kotlinToOkio() = Json.encodeToBufferedSink(DefaultPixelEvent.serializer(), data, devNullSink)
+
+ @Benchmark
fun kotlinToStringWithEscapes(): String = Json.encodeToString(DefaultPixelEvent.serializer(), dataWithEscapes)
@Benchmark
fun kotlinSmallToString(): String = Json.encodeToString(SmallDataClass.serializer(), smallData)
@Benchmark
+ fun kotlinSmallToStream() = Json.encodeToStream(SmallDataClass.serializer(), smallData, devNullStream)
+
+ @Benchmark
+ fun kotlinSmallToOkio() = Json.encodeToBufferedSink(SmallDataClass.serializer(), smallData, devNullSink)
+
+ @Benchmark
fun jacksonFromString(): DefaultPixelEvent = objectMapper.readValue(stringData, DefaultPixelEvent::class.java)
@Benchmark