Skip to content

Commit 16a3166

Browse files
committed
Add benchmark testcases for NativeJsonInput/Output
1 parent c93f4fe commit 16a3166

File tree

2 files changed

+37
-8
lines changed

2 files changed

+37
-8
lines changed

benchmark/js/README.md

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
How to run benchmark:
2+
- compile `sbt commons-benchmark-js/fullOptJS`
3+
- open `fullopt-2.13.html` file in a browser
4+
- select test suite and run

benchmark/js/src/main/scala/com/avsystem/commons/ser/JsonBenchmarks.scala

+33-8
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package com.avsystem.commons
22
package ser
33

44
import com.avsystem.commons.serialization.json.{JsonStringInput, JsonStringOutput}
5+
import com.avsystem.commons.serialization.nativejs.{NativeJsonInput, NativeJsonOutput}
56
import io.circe.parser._
67
import io.circe.syntax._
78
import japgolly.scalajs.benchmark.gui.GuiSuite
@@ -10,62 +11,86 @@ import japgolly.scalajs.benchmark.{Benchmark, Suite}
1011
object JsonBenchmarks {
1112
val suite = GuiSuite(
1213
Suite("JSON serialization benchmarks")(
13-
Benchmark("Writing case class: GenCodec") {
14+
Benchmark("Writing case class: GenCodec, String Json format") {
1415
JsonStringOutput.write(Something.Example)
1516
},
17+
Benchmark("Writing case class: GenCodec, Native Json format") {
18+
NativeJsonOutput.writeAsString(Something.Example)
19+
},
1620
Benchmark("Writing case class: Circe") {
1721
Something.Example.asJson.noSpaces
1822
},
1923
Benchmark("Writing case class: uPickle") {
2024
upickle.default.write(Something.Example)
2125
},
22-
Benchmark("Reading case class: GenCodec") {
26+
Benchmark("Reading case class: GenCodec, String Json format") {
2327
JsonStringInput.read[Something](Something.ExampleJsonString)
2428
},
29+
Benchmark("Reading case class: GenCodec, Native Json format") {
30+
NativeJsonInput.readString[Something](Something.ExampleJsonString)
31+
},
2532
Benchmark("Reading case class: Circe") {
2633
decode[Something](Something.ExampleJsonString).fold(e => throw e, identity)
2734
},
2835
Benchmark("Reading case class: uPickle") {
2936
upickle.default.read[Something](Something.ExampleJsonString)
3037
},
3138

32-
Benchmark("Writing sealed hierarchy: GenCodec") {
39+
Benchmark("Writing sealed hierarchy: GenCodec, String Json format") {
3340
JsonStringOutput.write(SealedStuff.ExampleList)
3441
},
35-
Benchmark("Writing sealed hierarchy: GenCodec (flat)") {
42+
Benchmark("Writing sealed hierarchy: GenCodec (flat), String Json format") {
3643
JsonStringOutput.write(FlatSealedStuff.ExampleList)
3744
},
45+
Benchmark("Writing sealed hierarchy: GenCodec, Native Json format") {
46+
NativeJsonOutput.writeAsString(SealedStuff.ExampleList)
47+
},
48+
Benchmark("Writing sealed hierarchy: GenCodec (flat), Native Json format") {
49+
NativeJsonOutput.writeAsString(FlatSealedStuff.ExampleList)
50+
},
3851
Benchmark("Writing sealed hierarchy: Circe") {
3952
SealedStuff.ExampleList.asJson.noSpaces
4053
},
4154
Benchmark("Writing sealed hierarchy: uPickle") {
4255
upickle.default.write(SealedStuff.ExampleList)
4356
},
44-
Benchmark("Reading sealed hierarchy: GenCodec") {
57+
Benchmark("Reading sealed hierarchy: GenCodec, String Json format") {
4558
JsonStringInput.read[List[SealedStuff]](SealedStuff.ExampleJsonString)
4659
},
47-
Benchmark("Reading sealed hierarchy: GenCodec (flat)") {
60+
Benchmark("Reading sealed hierarchy: GenCodec (flat), String Json format") {
4861
JsonStringInput.read[List[FlatSealedStuff]](FlatSealedStuff.ExampleJsonString)
4962
},
63+
Benchmark("Reading sealed hierarchy: GenCodec, Native Json format") {
64+
NativeJsonInput.readString[List[SealedStuff]](SealedStuff.ExampleJsonString)
65+
},
66+
Benchmark("Reading sealed hierarchy: GenCodec (flat), Native Json format") {
67+
NativeJsonInput.readString[List[FlatSealedStuff]](FlatSealedStuff.ExampleJsonString)
68+
},
5069
Benchmark("Reading sealed hierarchy: Circe") {
5170
decode[List[SealedStuff]](SealedStuff.ExampleJsonString).fold(e => throw e, identity)
5271
},
5372
Benchmark("Reading sealed hierarchy: uPickle") {
5473
upickle.default.read[List[SealedStuff]](SealedStuff.ExampleUpickleJsonString)
5574
},
5675

57-
Benchmark("Writing foos: GenCodec") {
76+
Benchmark("Writing foos: GenCodec, String Json format") {
5877
JsonStringOutput.write(Foo.ExampleMap)
5978
},
79+
Benchmark("Writing foos: GenCodec, Native Json format") {
80+
NativeJsonOutput.writeAsString(Foo.ExampleMap)
81+
},
6082
Benchmark("Writing foos: Circe") {
6183
Foo.ExampleMap.asJson.noSpaces
6284
},
6385
Benchmark("Writing foos: uPickle") {
6486
upickle.default.write(Foo.ExampleMap)
6587
},
66-
Benchmark("Reading foos: GenCodec") {
88+
Benchmark("Reading foos: GenCodec, String Json format") {
6789
JsonStringInput.read[Map[String, Foo]](Foo.ExampleJsonString)
6890
},
91+
Benchmark("Reading foos: GenCodec with Native Json format") {
92+
NativeJsonInput.readString[Map[String, Foo]](Foo.ExampleJsonString)
93+
},
6994
Benchmark("Reading foos: Circe") {
7095
decode[Map[String, Foo]](Foo.ExampleJsonString).fold(e => throw e, identity)
7196
},

0 commit comments

Comments
 (0)