• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright 2017-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license.
3  */
4 package kotlinx.benchmarks.protobuf
5 
6 import kotlinx.serialization.Serializable
7 import kotlinx.serialization.protobuf.*
8 import org.openjdk.jmh.annotations.*
9 import java.util.concurrent.*
10 
11 @Warmup(iterations = 5, time = 1)
12 @Measurement(iterations = 5, time = 1)
13 @BenchmarkMode(Mode.Throughput)
14 @OutputTimeUnit(TimeUnit.MILLISECONDS)
15 @State(Scope.Benchmark)
16 @Fork(1)
17 open class ProtoHuge {
18 
19     @Serializable
20     data class Values130(
21         val field0: Int,
22         val field1: Int,
23         val field2: Int,
24         val field3: Int,
25         val field4: Int,
26         val field5: Int,
27         val field6: Int,
28         val field7: Int,
29         val field8: Int,
30         val field9: Int,
31 
32         val field10: Int,
33         val field11: Int,
34         val field12: Int,
35         val field13: Int,
36         val field14: Int,
37         val field15: Int,
38         val field16: Int,
39         val field17: Int,
40         val field18: Int,
41         val field19: Int,
42 
43         val field20: Int,
44         val field21: Int,
45         val field22: Int,
46         val field23: Int,
47         val field24: Int,
48         val field25: Int,
49         val field26: Int,
50         val field27: Int,
51         val field28: Int,
52         val field29: Int,
53 
54         val field30: Int,
55         val field31: Int,
56         val field32: Int,
57         val field33: Int,
58         val field34: Int,
59         val field35: Int,
60         val field36: Int,
61         val field37: Int,
62         val field38: Int,
63         val field39: Int,
64 
65         val field40: Int,
66         val field41: Int,
67         val field42: Int,
68         val field43: Int,
69         val field44: Int,
70         val field45: Int,
71         val field46: Int,
72         val field47: Int,
73         val field48: Int,
74         val field49: Int,
75 
76         val field50: Int,
77         val field51: Int,
78         val field52: Int,
79         val field53: Int,
80         val field54: Int,
81         val field55: Int,
82         val field56: Int,
83         val field57: Int,
84         val field58: Int,
85         val field59: Int,
86 
87         val field60: Int,
88         val field61: Int,
89         val field62: Int,
90         val field63: Int,
91         val field64: Int,
92         val field65: Int,
93         val field66: Int,
94         val field67: Int,
95         val field68: Int,
96         val field69: Int,
97 
98         val field70: Int,
99         val field71: Int,
100         val field72: Int,
101         val field73: Int,
102         val field74: Int,
103         val field75: Int,
104         val field76: Int,
105         val field77: Int,
106         val field78: Int,
107         val field79: Int,
108 
109         val field80: Int,
110         val field81: Int,
111         val field82: Int,
112         val field83: Int,
113         val field84: Int,
114         val field85: Int,
115         val field86: Int,
116         val field87: Int,
117         val field88: Int,
118         val field89: Int,
119 
120         val field90: Int,
121         val field91: Int,
122         val field92: Int,
123         val field93: Int,
124         val field94: Int,
125         val field95: Int,
126         val field96: Int,
127         val field97: Int,
128         val field98: Int,
129         val field99: Int,
130 
131         val field100: Int,
132         val field101: Int,
133         val field102: Int,
134         val field103: Int,
135         val field104: Int,
136         val field105: Int,
137         val field106: Int,
138         val field107: Int,
139         val field108: Int,
140         val field109: Int,
141 
142         val field110: Int,
143         val field111: Int,
144         val field112: Int,
145         val field113: Int,
146         val field114: Int,
147         val field115: Int,
148         val field116: Int,
149         val field117: Int,
150         val field118: Int,
151         val field119: Int,
152 
153         val field120: Int,
154         val field121: Int,
155         val field122: Int,
156         val field123: Int,
157         val field124: Int,
158         val field125: Int,
159         val field126: Int,
160         val field127: Int,
161         val field128: Int,
162         val field129: Int
163     )
164 
165     private val values130 = Values130(
166         0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
167         10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
168         20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
169         30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
170         40, 41, 42, 43, 44, 45, 46, 47, 48, 49,
171         50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
172         60, 61, 62, 63, 64, 65, 66, 67, 68, 69,
173         70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
174         80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
175         90, 91, 92, 93, 94, 95, 96, 97, 98, 99,
176         100, 101, 102, 103, 104, 105, 106, 107, 108, 109,
177         110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
178         120, 121, 122, 123, 124, 125, 126, 127, 128, 129
179     )
180 
181     private val values130Bytes = ProtoBuf.encodeToByteArray(Values130.serializer(), values130)
182 
183     @Benchmark
toBytes130null184     fun toBytes130() = ProtoBuf.encodeToByteArray(Values130.serializer(), values130)
185 
186     @Benchmark
187     fun fromBytes130() = ProtoBuf.decodeFromByteArray(Values130.serializer(), values130Bytes)
188 
189 }
190