@@ -2,6 +2,7 @@ package kotlinx.benchmarks.json
2
2
3
3
import com.fasterxml.jackson.databind.*
4
4
import com.fasterxml.jackson.module.kotlin.*
5
+ import benchmarks.model.*
5
6
import kotlinx.serialization.*
6
7
import kotlinx.serialization.json.*
7
8
import kotlinx.serialization.json.okio.encodeToBufferedSink
@@ -20,53 +21,8 @@ import java.util.concurrent.*
20
21
@Fork(2 )
21
22
open class JacksonComparisonBenchmark {
22
23
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
-
39
24
private val objectMapper: ObjectMapper = jacksonObjectMapper()
40
25
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
- )
70
26
71
27
private val devNullSink = blackholeSink().buffer()
72
28
private val devNullStream = object : OutputStream () {
@@ -75,7 +31,7 @@ open class JacksonComparisonBenchmark {
75
31
override fun write (b : ByteArray , off : Int , len : Int ) {}
76
32
}
77
33
78
- private val stringData = Json .encodeToString(DefaultPixelEvent .serializer(), data )
34
+ private val stringData = Json .encodeToString(DefaultPixelEvent .serializer(), pixelEvent )
79
35
private val utf8BytesData = stringData.toByteArray()
80
36
81
37
@Serializable
@@ -84,28 +40,28 @@ open class JacksonComparisonBenchmark {
84
40
private val smallData = SmallDataClass (42 , " Vincent" )
85
41
86
42
@Benchmark
87
- fun jacksonToString (): String = objectMapper.writeValueAsString(data )
43
+ fun jacksonToString (): String = objectMapper.writeValueAsString(pixelEvent )
88
44
89
45
@Benchmark
90
- fun jacksonToStringWithEscapes (): String = objectMapper.writeValueAsString(dataWithEscapes )
46
+ fun jacksonToStringWithEscapes (): String = objectMapper.writeValueAsString(pixelEventWithEscapes )
91
47
92
48
@Benchmark
93
49
fun jacksonSmallToString (): String = objectMapper.writeValueAsString(smallData)
94
50
95
51
@Benchmark
96
- fun kotlinToString (): String = Json .encodeToString(DefaultPixelEvent .serializer(), data )
52
+ fun kotlinToString (): String = Json .encodeToString(DefaultPixelEvent .serializer(), pixelEvent )
97
53
98
54
@Benchmark
99
- fun kotlinToStream () = Json .encodeToStream(DefaultPixelEvent .serializer(), data , devNullStream)
55
+ fun kotlinToStream () = Json .encodeToStream(DefaultPixelEvent .serializer(), pixelEvent , devNullStream)
100
56
101
57
@Benchmark
102
58
fun kotlinFromStream () = Json .decodeFromStream(DefaultPixelEvent .serializer(), ByteArrayInputStream (utf8BytesData))
103
59
104
60
@Benchmark
105
- fun kotlinToOkio () = Json .encodeToBufferedSink(DefaultPixelEvent .serializer(), data , devNullSink)
61
+ fun kotlinToOkio () = Json .encodeToBufferedSink(DefaultPixelEvent .serializer(), pixelEvent , devNullSink)
106
62
107
63
@Benchmark
108
- fun kotlinToStringWithEscapes (): String = Json .encodeToString(DefaultPixelEvent .serializer(), dataWithEscapes )
64
+ fun kotlinToStringWithEscapes (): String = Json .encodeToString(DefaultPixelEvent .serializer(), pixelEventWithEscapes )
109
65
110
66
@Benchmark
111
67
fun kotlinSmallToString (): String = Json .encodeToString(SmallDataClass .serializer(), smallData)
0 commit comments