Skip to content

Commit af4da94

Browse files
authored
Add benchmarks for zio-schema-json (#1232)
Add benchmarks for zio-schema-json
1 parent a96f7dc commit af4da94

File tree

295 files changed

+1295
-324
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

295 files changed

+1295
-324
lines changed

build.sbt

+2-1
Original file line numberDiff line numberDiff line change
@@ -243,7 +243,8 @@ lazy val `jsoniter-scala-benchmark` = crossProject(JVMPlatform, JSPlatform)
243243
"com.disneystreaming.smithy4s" %%% "smithy4s-json" % "0.18.28",
244244
"com.evolutiongaming" %%% "play-json-jsoniter" % "0.10.3" intransitive(),
245245
"org.playframework" %%% "play-json" % "3.0.4",
246-
"dev.zio" %%% "zio-json" % "0.7.3",
246+
"dev.zio" %%% "zio-json" % "0.7.4",
247+
"dev.zio" %%% "zio-schema-json" % "1.5.0",
247248
"io.circe" %%% "circe-generic" % "0.14.10",
248249
"io.circe" %%% "circe-jawn" % "0.14.10",
249250
"com.lihaoyi" %%% "upickle" % "4.0.2",

jsoniter-scala-benchmark/js/src/main/scala-2/com/github/plokhotnyuk/jsoniter_scala/benchmark/Main.scala

+72-30
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@ object Main {
2626
B("smithy4sJson")(benchmark.smithy4sJson()),
2727
B("uPickle")(benchmark.uPickle()),
2828
B("zioJson")(benchmark.zioJson())
29+
//FIXME: zio-schema-json throws java.lang.RuntimeException: .type.Z.l.type(unrecognized subtype)
30+
//B("zioSchemaJson")(benchmark.zioSchemaJson())
2931
))
3032
}, {
3133
val benchmark = new ADTWriting { setup() }
@@ -41,6 +43,8 @@ object Main {
4143
B("smithy4sJson")(benchmark.smithy4sJson()),
4244
B("uPickle")(benchmark.uPickle()),
4345
B("zioJson")(benchmark.zioJson())
46+
//FIXME: zio-schema-json doesn't serialize the discriminator field
47+
//B("zioSchemaJson")(benchmark.zioSchemaJson())
4448
))
4549
}, {
4650
val benchmark = new AnyValsReading { setup() }
@@ -54,7 +58,8 @@ object Main {
5458
B("playJsonJsoniter")(benchmark.playJsonJsoniter()),
5559
B("smithy4sJson")(benchmark.smithy4sJson()),
5660
B("uPickle")(benchmark.uPickle()),
57-
B("zioJson")(benchmark.zioJson())
61+
B("zioJson")(benchmark.zioJson()),
62+
B("zioSchemaJson")(benchmark.zioSchemaJson())
5863
))
5964
}, {
6065
val benchmark = new AnyValsWriting { setup() }
@@ -69,7 +74,8 @@ object Main {
6974
B("playJsonJsoniter")(benchmark.playJsonJsoniter()),
7075
B("smithy4sJson")(benchmark.smithy4sJson()),
7176
B("uPickle")(benchmark.uPickle()),
72-
B("zioJson")(benchmark.zioJson())
77+
B("zioJson")(benchmark.zioJson()),
78+
B("zioSchemaJson")(benchmark.zioSchemaJson())
7379
))
7480
}, {
7581
val benchmark = new ArrayBufferOfBooleansReading { size = 128; setup() }
@@ -81,7 +87,8 @@ object Main {
8187
B("jsoniterScala")(benchmark.jsoniterScala()),
8288
B("playJson")(benchmark.playJson()),
8389
B("playJsonJsoniter")(benchmark.playJsonJsoniter()),
84-
B("uPickle")(benchmark.uPickle())
90+
B("uPickle")(benchmark.uPickle()),
91+
B("zioSchemaJson")(benchmark.zioSchemaJson())
8592
))
8693
}, {
8794
val benchmark = new ArrayBufferOfBooleansWriting { size = 128; setup() }
@@ -95,7 +102,8 @@ object Main {
95102
B("playJson")(benchmark.playJson()),
96103
B("playJsonJsoniter")(benchmark.playJsonJsoniter()),
97104
B("uPickle")(benchmark.uPickle()),
98-
B("zioJson")(benchmark.zioJson())
105+
B("zioJson")(benchmark.zioJson()),
106+
B("zioSchemaJson")(benchmark.zioSchemaJson())
99107
))
100108
}, {
101109
val benchmark = new ArrayOfBigDecimalsReading { size = 128; setup() }
@@ -165,7 +173,8 @@ object Main {
165173
B("playJsonJsoniter")(benchmark.playJsonJsoniter()),
166174
B("smithy4sJson")(benchmark.smithy4sJson()),
167175
B("uPickle")(benchmark.uPickle()),
168-
B("zioJson")(benchmark.zioJson())
176+
B("zioJson")(benchmark.zioJson()),
177+
B("zioSchemaJson")(benchmark.zioSchemaJson())
169178
))
170179
}, {
171180
val benchmark = new ArrayOfBooleansWriting { size = 128; setup() }
@@ -180,7 +189,8 @@ object Main {
180189
B("playJsonJsoniter")(benchmark.playJsonJsoniter()),
181190
B("smithy4sJson")(benchmark.smithy4sJson()),
182191
B("uPickle")(benchmark.uPickle()),
183-
B("zioJson")(benchmark.zioJson())
192+
B("zioJson")(benchmark.zioJson()),
193+
B("zioSchemaJson")(benchmark.zioSchemaJson())
184194
))
185195
}, {
186196
val benchmark = new ArrayOfBytesReading { size = 128; setup() }
@@ -305,7 +315,8 @@ object Main {
305315
B("playJson")(benchmark.playJson()),
306316
B("playJsonJsoniter")(benchmark.playJsonJsoniter()),
307317
B("uPickle")(benchmark.uPickle()),
308-
B("zioJson")(benchmark.zioJson())
318+
B("zioJson")(benchmark.zioJson()),
319+
B("zioSchemaJson")(benchmark.zioSchemaJson())
309320
))
310321
}, {
311322
val benchmark = new ArrayOfEnumADTsWriting { size = 128; setup() }
@@ -319,7 +330,8 @@ object Main {
319330
B("playJson")(benchmark.playJson()),
320331
B("playJsonJsoniter")(benchmark.playJsonJsoniter()),
321332
B("uPickle")(benchmark.uPickle()),
322-
B("zioJson")(benchmark.zioJson())
333+
B("zioJson")(benchmark.zioJson()),
334+
B("zioSchemaJson")(benchmark.zioSchemaJson())
323335
))
324336
}, {
325337
val benchmark = new ArrayOfEnumsReading { size = 128; setup() }
@@ -887,7 +899,8 @@ object Main {
887899
B("playJsonJsoniter")(benchmark.playJsonJsoniter()),
888900
B("smithy4sJson")(benchmark.smithy4sJson()),
889901
B("uPickle")(benchmark.uPickle()),
890-
B("zioJson")(benchmark.zioJson())
902+
B("zioJson")(benchmark.zioJson()),
903+
B("zioSchemaJson")(benchmark.zioSchemaJson())
891904
))
892905
}, {
893906
val benchmark = new ArraySeqOfBooleansWriting { size = 128; setup() }
@@ -902,7 +915,8 @@ object Main {
902915
B("playJsonJsoniter")(benchmark.playJsonJsoniter()),
903916
B("smithy4sJson")(benchmark.smithy4sJson()),
904917
B("uPickle")(benchmark.uPickle()),
905-
B("zioJson")(benchmark.zioJson())
918+
B("zioJson")(benchmark.zioJson()),
919+
B("zioSchemaJson")(benchmark.zioSchemaJson())
906920
))
907921
}, {
908922
val benchmark = new Base16Reading { size = 128; setup() }
@@ -1031,7 +1045,8 @@ object Main {
10311045
B("playJsonJsoniter")(benchmark.playJsonJsoniter()),
10321046
B("smithy4sJson")(benchmark.smithy4sJson()),
10331047
B("uPickle")(benchmark.uPickle()),
1034-
B("zioJson")(benchmark.zioJson())
1048+
B("zioJson")(benchmark.zioJson()),
1049+
B("zioSchemaJson")(benchmark.zioSchemaJson())
10351050
))
10361051
}, {
10371052
val benchmark = new GeoJSONReading { setup() }
@@ -1046,6 +1061,8 @@ object Main {
10461061
B("smithy4sJson")(benchmark.smithy4sJson()),
10471062
B("uPickle")(benchmark.uPickle()),
10481063
B("zioJson")(benchmark.zioJson())
1064+
//FIXME: zio-schema-json throws java.lang.RuntimeException: .type.FeatureCollection.features[0].type.Feature.geometry.type.Polygon(unrecognized subtype)
1065+
//B("zioSchemaJson")(benchmark.zioSchemaJson())
10491066
))
10501067
}, {
10511068
val benchmark = new GeoJSONWriting { setup() }
@@ -1060,7 +1077,8 @@ object Main {
10601077
B("playJsonJsoniter")(benchmark.playJsonJsoniter()),
10611078
B("smithy4sJson")(benchmark.smithy4sJson()),
10621079
B("uPickle")(benchmark.uPickle()),
1063-
B("zioJson")(benchmark.zioJson())
1080+
B("zioJson")(benchmark.zioJson()),
1081+
B("zioSchemaJson")(benchmark.zioSchemaJson())
10641082
))
10651083
}, {
10661084
val benchmark = new GitHubActionsAPIReading { setup() }
@@ -1074,7 +1092,8 @@ object Main {
10741092
B("playJsonJsoniter")(benchmark.playJsonJsoniter()),
10751093
B("smithy4sJson")(benchmark.smithy4sJson()),
10761094
B("uPickle")(benchmark.uPickle()),
1077-
B("zioJson")(benchmark.zioJson())
1095+
B("zioJson")(benchmark.zioJson()),
1096+
B("zioSchemaJson")(benchmark.zioSchemaJson())
10781097
))
10791098
}, {
10801099
val benchmark = new GitHubActionsAPIWriting { setup() }
@@ -1089,7 +1108,8 @@ object Main {
10891108
B("playJsonJsoniter")(benchmark.playJsonJsoniter()),
10901109
B("smithy4sJson")(benchmark.smithy4sJson()),
10911110
B("uPickle")(benchmark.uPickle()),
1092-
B("zioJson")(benchmark.zioJson())
1111+
B("zioJson")(benchmark.zioJson()),
1112+
B("zioSchemaJson")(benchmark.zioSchemaJson())
10931113
))
10941114
}, {
10951115
val benchmark = new GoogleMapsAPIPrettyPrinting { setup() }
@@ -1104,7 +1124,8 @@ object Main {
11041124
B("playJsonJsoniter")(benchmark.playJsonJsoniter()),
11051125
B("smithy4sJson")(benchmark.smithy4sJson()),
11061126
B("uPickle")(benchmark.uPickle()),
1107-
B("zioJson")(benchmark.zioJson())
1127+
B("zioJson")(benchmark.zioJson()),
1128+
B("zioSchemaJson")(benchmark.zioSchemaJson())
11081129
))
11091130
}, {
11101131
val benchmark = new GoogleMapsAPIReading { setup() }
@@ -1118,7 +1139,8 @@ object Main {
11181139
B("playJsonJsoniter")(benchmark.playJsonJsoniter()),
11191140
B("smithy4sJson")(benchmark.smithy4sJson()),
11201141
B("uPickle")(benchmark.uPickle()),
1121-
B("zioJson")(benchmark.zioJson())
1142+
B("zioJson")(benchmark.zioJson()),
1143+
B("zioSchemaJson")(benchmark.zioSchemaJson())
11221144
))
11231145
}, {
11241146
val benchmark = new GoogleMapsAPIWriting { setup() }
@@ -1133,7 +1155,8 @@ object Main {
11331155
B("playJsonJsoniter")(benchmark.playJsonJsoniter()),
11341156
B("smithy4sJson")(benchmark.smithy4sJson()),
11351157
B("uPickle")(benchmark.uPickle()),
1136-
B("zioJson")(benchmark.zioJson())
1158+
B("zioJson")(benchmark.zioJson()),
1159+
B("zioSchemaJson")(benchmark.zioSchemaJson())
11371160
))
11381161
}, {
11391162
val benchmark = new IntMapOfBooleansReading { size = 128; setup() }
@@ -1195,7 +1218,8 @@ object Main {
11951218
B("playJsonJsoniter")(benchmark.playJsonJsoniter()),
11961219
B("smithy4sJson")(benchmark.smithy4sJson()),
11971220
B("uPickle")(benchmark.uPickle()),
1198-
B("zioJson")(benchmark.zioJson())
1221+
B("zioJson")(benchmark.zioJson()),
1222+
B("zioSchemaJson")(benchmark.zioSchemaJson())
11991223
))
12001224
}, {
12011225
val benchmark = new ListOfBooleansWriting { size = 128; setup() }
@@ -1210,7 +1234,8 @@ object Main {
12101234
B("playJsonJsoniter")(benchmark.playJsonJsoniter()),
12111235
B("smithy4sJson")(benchmark.smithy4sJson()),
12121236
B("uPickle")(benchmark.uPickle()),
1213-
B("zioJson")(benchmark.zioJson())
1237+
B("zioJson")(benchmark.zioJson()),
1238+
B("zioSchemaJson")(benchmark.zioSchemaJson())
12141239
))
12151240
}, {
12161241
val benchmark = new MapOfIntsToBooleansReading { size = 128; setup() }
@@ -1249,7 +1274,8 @@ object Main {
12491274
B("playJsonJsoniter")(benchmark.playJsonJsoniter()),
12501275
B("smithy4sJson")(benchmark.smithy4sJson()),
12511276
B("uPickle")(benchmark.uPickle()),
1252-
B("zioJson")(benchmark.zioJson())
1277+
B("zioJson")(benchmark.zioJson()),
1278+
B("zioSchemaJson")(benchmark.zioSchemaJson())
12531279
))
12541280
}, {
12551281
val benchmark = new MutableBitSetReading { size = 128; setup() }
@@ -1349,6 +1375,8 @@ object Main {
13491375
B("smithy4sJson")(benchmark.smithy4sJson()),
13501376
B("uPickle")(benchmark.uPickle()),
13511377
B("zioJson")(benchmark.zioJson())
1378+
//FIXME: zio-schema-json parses only 127 levels of nesting instead of 128
1379+
//B("zioSchemaJson")(benchmark.zioSchemaJson())
13521380
))
13531381
}, {
13541382
val benchmark = new NestedStructsWriting { size = 128; setup() }
@@ -1362,7 +1390,8 @@ object Main {
13621390
B("playJsonJsoniter")(benchmark.playJsonJsoniter()),
13631391
B("smithy4sJson")(benchmark.smithy4sJson()),
13641392
B("uPickle")(benchmark.uPickle()),
1365-
B("zioJson")(benchmark.zioJson())
1393+
B("zioJson")(benchmark.zioJson()),
1394+
B("zioSchemaJson")(benchmark.zioSchemaJson())
13661395
))
13671396
}, {
13681397
val benchmark = new OpenRTBReading { setup() }
@@ -1376,7 +1405,8 @@ object Main {
13761405
B("playJsonJsoniter")(benchmark.playJsonJsoniter()),
13771406
B("smithy4sJson")(benchmark.smithy4sJson()),
13781407
B("uPickle")(benchmark.uPickle()),
1379-
B("zioJson")(benchmark.zioJson())
1408+
B("zioJson")(benchmark.zioJson()),
1409+
B("zioSchemaJson")(benchmark.zioSchemaJson())
13801410
))
13811411
}, {
13821412
val benchmark = new OpenRTBWriting { setup() }
@@ -1391,6 +1421,10 @@ object Main {
13911421
B("playJsonJsoniter")(benchmark.playJsonJsoniter()),
13921422
B("smithy4sJson")(benchmark.smithy4sJson()),
13931423
B("uPickle")(benchmark.uPickle())
1424+
//FIXME: zio-json serializes empty collections
1425+
//B("zioJson")(benchmark.zioJson()),
1426+
//FIXME: zio-schema-json serializes default values
1427+
//B("zioSchemaJson")(benchmark.zioSchemaJson())
13941428
))
13951429
}, {
13961430
val benchmark = new PrimitivesReading { setup() }
@@ -1404,7 +1438,8 @@ object Main {
14041438
B("playJsonJsoniter")(benchmark.playJsonJsoniter()),
14051439
B("smithy4sJson")(benchmark.smithy4sJson()),
14061440
B("uPickle")(benchmark.uPickle()),
1407-
B("zioJson")(benchmark.zioJson())
1441+
B("zioJson")(benchmark.zioJson()),
1442+
B("zioSchemaJson")(benchmark.zioSchemaJson())
14081443
))
14091444
}, {
14101445
val benchmark = new PrimitivesWriting { setup() }
@@ -1419,7 +1454,8 @@ object Main {
14191454
B("playJsonJsoniter")(benchmark.playJsonJsoniter()),
14201455
B("smithy4sJson")(benchmark.smithy4sJson()),
14211456
B("uPickle")(benchmark.uPickle()),
1422-
B("zioJson")(benchmark.zioJson())
1457+
B("zioJson")(benchmark.zioJson()),
1458+
B("zioSchemaJson")(benchmark.zioSchemaJson())
14231459
))
14241460
}, {
14251461
val benchmark = new SetOfIntsReading { size = 128; setup() }
@@ -1433,7 +1469,8 @@ object Main {
14331469
B("playJsonJsoniter")(benchmark.playJsonJsoniter()),
14341470
B("smithy4sJson")(benchmark.smithy4sJson()),
14351471
B("uPickle")(benchmark.uPickle()),
1436-
B("zioJson")(benchmark.zioJson())
1472+
B("zioJson")(benchmark.zioJson()),
1473+
B("zioSchemaJson")(benchmark.zioSchemaJson())
14371474
))
14381475
}, {
14391476
val benchmark = new SetOfIntsWriting { size = 128; setup() }
@@ -1448,7 +1485,8 @@ object Main {
14481485
B("playJsonJsoniter")(benchmark.playJsonJsoniter()),
14491486
B("smithy4sJson")(benchmark.smithy4sJson()),
14501487
B("uPickle")(benchmark.uPickle()),
1451-
B("zioJson")(benchmark.zioJson())
1488+
B("zioJson")(benchmark.zioJson()),
1489+
B("zioSchemaJson")(benchmark.zioSchemaJson())
14521490
))
14531491
}, {
14541492
val benchmark = new StringOfAsciiCharsReading { size = 128; setup() }
@@ -1548,7 +1586,8 @@ object Main {
15481586
B("playJsonJsoniter")(benchmark.playJsonJsoniter()),
15491587
B("smithy4sJson")(benchmark.smithy4sJson()),
15501588
B("uPickle")(benchmark.uPickle()),
1551-
B("zioJson")(benchmark.zioJson())
1589+
B("zioJson")(benchmark.zioJson()),
1590+
B("zioSchemaJson")(benchmark.zioSchemaJson())
15521591
))
15531592
}, {
15541593
val benchmark = new TwitterAPIWriting { setup() }
@@ -1562,7 +1601,8 @@ object Main {
15621601
B("playJson")(benchmark.playJson()),
15631602
B("playJsonJsoniter")(benchmark.playJsonJsoniter()),
15641603
B("smithy4sJson")(benchmark.smithy4sJson()),
1565-
B("uPickle")(benchmark.uPickle())
1604+
B("uPickle")(benchmark.uPickle()),
1605+
B("zioSchemaJson")(benchmark.zioSchemaJson())
15661606
))
15671607
}, {
15681608
val benchmark = new VectorOfBooleansReading { size = 128; setup() }
@@ -1576,7 +1616,8 @@ object Main {
15761616
B("playJsonJsoniter")(benchmark.playJsonJsoniter()),
15771617
B("smithy4sJson")(benchmark.smithy4sJson()),
15781618
B("uPickle")(benchmark.uPickle()),
1579-
B("zioJson")(benchmark.zioJson())
1619+
B("zioJson")(benchmark.zioJson()),
1620+
B("zioSchemaJson")(benchmark.zioSchemaJson())
15801621
))
15811622
}, {
15821623
val benchmark = new VectorOfBooleansWriting { size = 128; setup() }
@@ -1591,7 +1632,8 @@ object Main {
15911632
B("playJsonJsoniter")(benchmark.playJsonJsoniter()),
15921633
B("smithy4sJson")(benchmark.smithy4sJson()),
15931634
B("uPickle")(benchmark.uPickle()),
1594-
B("zioJson")(benchmark.zioJson())
1635+
B("zioJson")(benchmark.zioJson()),
1636+
B("zioSchemaJson")(benchmark.zioSchemaJson())
15951637
))
15961638
})
15971639
}

0 commit comments

Comments
 (0)