diff options
Diffstat (limited to 'benchmark/src/jmh/kotlin/kotlinx/benchmarks/json/JacksonComparisonBenchmark.kt')
-rw-r--r-- | benchmark/src/jmh/kotlin/kotlinx/benchmarks/json/JacksonComparisonBenchmark.kt | 28 |
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 |