@@ -2,6 +2,7 @@ package kotlinx.benchmarks.json
22
33import com.fasterxml.jackson.databind.*
44import com.fasterxml.jackson.module.kotlin.*
5+ import benchmarks.model.*
56import kotlinx.serialization.*
67import kotlinx.serialization.json.*
78import kotlinx.serialization.json.okio.encodeToBufferedSink
@@ -20,53 +21,8 @@ import java.util.concurrent.*
2021@Fork(2 )
2122open class JacksonComparisonBenchmark {
2223
23- @Serializable
24- data class DefaultPixelEvent (
25- val version : Int ,
26- val dateTime2 : String ,
27- val serverName : String ,
28- val domain : String ,
29- val method : String ,
30- val clientIp : String ,
31- val queryString : String ,
32- val userAgent : String ,
33- val contentType : String ,
34- val browserLanguage : String ,
35- val postData : String ,
36- val cookies : String
37- )
38-
3924 private val objectMapper: ObjectMapper = jacksonObjectMapper()
4025
41- private val data = DefaultPixelEvent (
42- version = 1 ,
43- dateTime2 = System .currentTimeMillis().toString(),
44- serverName = " some-endpoint-qwer" ,
45- domain = " some.domain.com" ,
46- method = " POST" ,
47- clientIp = " 127.0.0.1" ,
48- queryString = " anxa=CASCative&anxv=13.901.16.34566&anxe=FoolbarActive&anxt=E7AFBF15-1761-4343-92C1-78167ED19B1C&anxtv=13.901.16.34566&anxp=%5ECQ6%5Expt292%5ES33656%5Eus&anxsi&anxd=2019-10-08T17%3A03%3A57.246Z&f=00400000&anxr=1571945992297&coid=66abafd0d49f42e58dc7536109395306&userSegment&cwsid=opgkcnbminncdgghighmimmphiooeohh" ,
49- userAgent = " Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:70.0) Gecko/20100101 Firefox/70.0" ,
50- contentType = " text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" ,
51- browserLanguage = " en-US,en;q=0.5" ,
52- postData = " -" ,
53- cookies = " _ga=GA1.2.971852807.1546968515"
54- )
55-
56- private val dataWithEscapes = DefaultPixelEvent (
57- version = 1 ,
58- dateTime2 = System .currentTimeMillis().toString(),
59- serverName = " some-endp\" oint-qwer" ,
60- domain = " <a href=\" some.domain.com\" >" ,
61- method = " POST" ,
62- clientIp = " 127.0.0.1" ,
63- queryString = " anxa=CASCative&anxv=13.901.16.34566&anxe=\" FoolbarActive\" &anxt=E7AFBF15-1761-4343-92C1-78167ED19B1C&anxtv=13.901.16.34566&anxp=%5ECQ6%5Expt292%5ES33656%5Eus&anxsi&anxd=2019-10-08T17%3A03%3A57.246Z&f=00400000&anxr=1571945992297&coid=\" 66abafd0d49f42e58dc7536109395306\" &userSegment&cwsid=opgkcnbminncdgghighmimmphiooeohh" ,
64- userAgent = " Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:70.0) Gecko/20100101 Firefox/70.0" ,
65- contentType = " text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" ,
66- browserLanguage = " \" en\" -\" US\" ,en;\\ q=0.5" ,
67- postData = " -" ,
68- cookies = " _ga=GA1.2.971852807.1546968515"
69- )
7026
7127 private val devNullSink = blackholeSink().buffer()
7228 private val devNullStream = object : OutputStream () {
@@ -75,7 +31,7 @@ open class JacksonComparisonBenchmark {
7531 override fun write (b : ByteArray , off : Int , len : Int ) {}
7632 }
7733
78- private val stringData = Json .encodeToString(DefaultPixelEvent .serializer(), data )
34+ private val stringData = Json .encodeToString(DefaultPixelEvent .serializer(), pixelEvent )
7935 private val utf8BytesData = stringData.toByteArray()
8036
8137 @Serializable
@@ -84,28 +40,28 @@ open class JacksonComparisonBenchmark {
8440 private val smallData = SmallDataClass (42 , " Vincent" )
8541
8642 @Benchmark
87- fun jacksonToString (): String = objectMapper.writeValueAsString(data )
43+ fun jacksonToString (): String = objectMapper.writeValueAsString(pixelEvent )
8844
8945 @Benchmark
90- fun jacksonToStringWithEscapes (): String = objectMapper.writeValueAsString(dataWithEscapes )
46+ fun jacksonToStringWithEscapes (): String = objectMapper.writeValueAsString(pixelEventWithEscapes )
9147
9248 @Benchmark
9349 fun jacksonSmallToString (): String = objectMapper.writeValueAsString(smallData)
9450
9551 @Benchmark
96- fun kotlinToString (): String = Json .encodeToString(DefaultPixelEvent .serializer(), data )
52+ fun kotlinToString (): String = Json .encodeToString(DefaultPixelEvent .serializer(), pixelEvent )
9753
9854 @Benchmark
99- fun kotlinToStream () = Json .encodeToStream(DefaultPixelEvent .serializer(), data , devNullStream)
55+ fun kotlinToStream () = Json .encodeToStream(DefaultPixelEvent .serializer(), pixelEvent , devNullStream)
10056
10157 @Benchmark
10258 fun kotlinFromStream () = Json .decodeFromStream(DefaultPixelEvent .serializer(), ByteArrayInputStream (utf8BytesData))
10359
10460 @Benchmark
105- fun kotlinToOkio () = Json .encodeToBufferedSink(DefaultPixelEvent .serializer(), data , devNullSink)
61+ fun kotlinToOkio () = Json .encodeToBufferedSink(DefaultPixelEvent .serializer(), pixelEvent , devNullSink)
10662
10763 @Benchmark
108- fun kotlinToStringWithEscapes (): String = Json .encodeToString(DefaultPixelEvent .serializer(), dataWithEscapes )
64+ fun kotlinToStringWithEscapes (): String = Json .encodeToString(DefaultPixelEvent .serializer(), pixelEventWithEscapes )
10965
11066 @Benchmark
11167 fun kotlinSmallToString (): String = Json .encodeToString(SmallDataClass .serializer(), smallData)
0 commit comments