Skip to content

Commit 71fc928

Browse files
committed
refactoring; remove sample results from README (to run, add to wiki)
1 parent c8580ea commit 71fc928

33 files changed

+45
-83
lines changed

README.md

Lines changed: 7 additions & 73 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ using widely-used, popular Java JSON libraries like:
1212
as well as some of newer Java JSON library options:
1313

1414
* [Boon](https://github.com/boonproject/boon/wiki/Boon-JSON-in-five-minutes)
15+
* [DSL-JSON](https://github.com/ngs-doo/dsl-json) (compatible with [DSL-Platform](https://dsl-platform.com/))
1516
* [Johnzon](http://johnzon.incubator.apache.org/)
1617
* pre-1.0, incubation release
1718
* [json-io](https://github.com/jdereg/json-io)
@@ -23,7 +24,7 @@ The criteria for inclusion here is that for a library to be included it should
2324
1. be published to the central Maven repository (so we can include official builds)
2425
2. be able to read and write POJOs, not just "Lists and Maps" or "custom tree nodes library defines" (although some tests may also exercise these styles as well)
2526

26-
and for this reason some commonly used libraries (like old "org.json" library) are not included.
27+
and for this reason some commonly used libraries (like old "org.json" library and "simple-json") are not included.
2728

2829
## Usage
2930

@@ -37,9 +38,11 @@ after this, tests are run the way `jmh` tests are, by just running "executable"
3738

3839
for example:
3940

40-
java -Xmx256m -jar target/microbenchmarks.jar -wi 4 -i 5 -f 9 ".*DZoneWrite.*write10AsString"
41+
java -Xmx256m -jar target/microbenchmarks.jar -wi 4 -i 5 -f 9 ".*DZoneReadPojo.*read10FromStream"
42+
java -Xmx256m -jar target/microbenchmarks.jar -wi 4 -i 5 -f 9 ".*DZoneWrite.*write10UsingStream"
43+
44+
both of which would run the "DZone" write test with 10 items, using 9 iterations of 5 seconds, with warmup time of 4 seconds; first test for read (JSON into POJO) and second write (POJO to JSON) performance.
4145

42-
which would run the "DZone" write test with 10 items, using 9 iterations of 5 seconds, with warmup time of 4 seconds.
4346
All options are explained by jmh documentation; an easy way to see options available is to enter:
4447

4548
java -jar target/microbenchmarks.jar -h
@@ -95,73 +98,4 @@ and the difference is from naming tests classes like `DZoneReadMapJackson` (repl
9598

9699
## Sample results
97100

98-
***NOTE!!!***
99-
100-
These results are bit out of date as of 31-May-2016: stay tuned for updates, with many new fast
101-
implementations, such as `dsl-json`, `fastjson` and newer versions of `Moshi` and `Boon`.
102-
103-
I hope to update this page, most likely moving sample results to separate Wiki pages, given
104-
number of permutations and so on.
105-
106-
### General
107-
108-
Since results may vary significantly between different platforms and JVM versions, it is best to
109-
run benchmark on systems you are using.
110-
But to give some idea of typical results, here are samples I get running tests on my work laptop:
111-
112-
### DZone tests
113-
114-
Results as reported on console, except sorted in descending order of performance (fastest first)
115-
116-
#### Writing 1000 item list as String
117-
118-
```
119-
% java -Xmx256m -jar target/microbenchmarks.jar ".*DZoneWrite.*write1k.*AsString.*" -wi 4 -i 5 -f 19
120-
121-
# Run complete. Total time: 00:20:58
122-
123-
Benchmark Mode Cnt Score Error Units
124-
DZoneWriteJackson.write1kAsString thrpt 95 4377.870 ± 22.375 ops/s
125-
DZoneWriteJacksonJr.write1kAsString thrpt 95 3880.734 ± 32.488 ops/s
126-
DZoneWriteBoon.write1kAsString thrpt 95 2614.780 ± 15.105 ops/s
127-
DZoneWriteJohnzon.write1kAsString thrpt 95 2088.878 ± 12.612 ops/s
128-
DZoneWriteMoshi.write1kAsString thrpt 95 1655.735 ± 9.793 ops/s
129-
DZoneWriteGSON.write1kAsString thrpt 95 1209.408 ± 10.565 ops/s
130-
DZoneWriteJsonIO.write1kAsString thrpt 95 883.185 ± 7.002 ops/s
131-
```
132-
133-
#### Reading 1000 item (POJO) list from String
134-
135-
```
136-
% java -Xmx256m -jar target/microbenchmarks.jar ".*DZoneReadPojo.*read10FromString.*" -wi 4 -i 5 -f 9
137-
138-
# Run complete. Total time: 00:10:27
139-
140-
Benchmark Mode Cnt Score Error Units
141-
DZoneReadPojoJacksonJr.read10FromString thrpt 45 217944.421 ± 3606.032 ops/s
142-
DZoneReadPojoJackson.read10FromString thrpt 45 215162.661 ± 3699.385 ops/s
143-
DZoneReadPojoGSON.read10FromString thrpt 45 143185.788 ± 3431.425 ops/s
144-
DZoneReadPojoBoon.read10FromString thrpt 45 118542.144 ± 1747.026 ops/s
145-
DZoneReadPojoMoshi.read10FromString thrpt 45 92379.201 ± 1415.529 ops/s
146-
DZoneReadPojoJohnzon.read10FromString thrpt 45 74268.988 ± 1505.027 ops/s
147-
```
148-
149-
Json-io is not (yet) included because it seems to require JSON content to be specifically written by `json-io`
150-
itself, and not accept standard json representation (probably since it requires type information embedded).
151-
152-
#### Reading 10 items as "untyped" (`Map`) from String
153-
154-
```
155-
% java -Xmx256m -jar target/microbenchmarks.jar ".*DZoneReadMap.*read10FromString.*" -wi 4 -i 5 -f 9
156-
157-
# Run complete. Total time: 00:10:26
158-
159-
Benchmark Mode Cnt Score Error Units
160-
DZoneReadMapJacksonJr.read10FromString thrpt 45 233240.208 ± 2844.701 ops/s
161-
DZoneReadMapBoon.read10FromString thrpt 45 216714.713 ± 2328.799 ops/s
162-
DZoneReadMapJackson.read10FromString thrpt 45 197597.668 ± 2092.722 ops/s
163-
DZoneReadMapGSON.read10FromString thrpt 45 154916.876 ± 1355.639 ops/s
164-
DZoneReadMapJohnzon.read10FromString thrpt 45 75610.515 ± 469.744 ops/s
165-
DZoneReadMapJsonIO.read10FromString thrpt 45 28445.343 ± 279.304 ops/s
166-
DZoneReadMapJsonMoshi.read10FromString thrpt 45 86168.309 ± 1428.668 ops/s
167-
```
101+
See [Wiki](../../wiki) for sample results.

pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -121,12 +121,12 @@
121121
<dependency>
122122
<groupId>org.apache.johnzon</groupId>
123123
<artifactId>johnzon-core</artifactId>
124-
<version>0.8-incubating</version>
124+
<version>0.9.3-incubating</version>
125125
</dependency>
126126
<dependency>
127127
<groupId>org.apache.johnzon</groupId>
128128
<artifactId>johnzon-mapper</artifactId>
129-
<version>0.9.2-incubating</version>
129+
<version>0.9.3-incubating</version>
130130
</dependency>
131131
<!-- also requires "json-p" API -->
132132
<dependency>

src/main/java/com/cowtowncoder/jsonperf/dzone/read/DZoneReadTestBase.java renamed to src/main/java/com/cowtowncoder/jsonperf/dzone/DZoneReadTestBase.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.cowtowncoder.jsonperf.dzone.read;
1+
package com.cowtowncoder.jsonperf.dzone;
22

33
import java.io.ByteArrayInputStream;
44
import java.io.InputStream;
@@ -8,9 +8,7 @@
88
import org.openjdk.jmh.annotations.OutputTimeUnit;
99
import org.openjdk.jmh.infra.Blackhole;
1010

11-
import com.cowtowncoder.jsonperf.dzone.TestData;
12-
13-
abstract class DZoneReadTestBase<T>
11+
public abstract class DZoneReadTestBase<T>
1412
{
1513
protected final static byte[] list10b = TestData.Input.list10Bytes;
1614
protected final static byte[] list1000b = TestData.Input.list1000Bytes;

src/main/java/com/cowtowncoder/jsonperf/dzone/write/DZoneWriteTestBase.java renamed to src/main/java/com/cowtowncoder/jsonperf/dzone/DZoneWriteTestBase.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.cowtowncoder.jsonperf.dzone.write;
1+
package com.cowtowncoder.jsonperf.dzone;
22

33
import java.io.OutputStream;
44
import java.io.Writer;
@@ -8,8 +8,6 @@
88
import org.openjdk.jmh.annotations.OutputTimeUnit;
99
import org.openjdk.jmh.infra.Blackhole;
1010

11-
import com.cowtowncoder.jsonperf.dzone.MeasurementPOJO;
12-
import com.cowtowncoder.jsonperf.dzone.TestData;
1311
import com.cowtowncoder.jsonperf.util.NopOutputStream;
1412
import com.cowtowncoder.jsonperf.util.NopWriter;
1513

@@ -18,7 +16,7 @@
1816
* <a href="https://dzone.com/articles/compare-json-api">DZone Jackson vs GSON</a>
1917
* test.
2018
*/
21-
abstract class DZoneWriteTestBase
19+
public abstract class DZoneWriteTestBase
2220
{
2321
protected final static MeasurementPOJO list10 = TestData.list10;
2422
protected final static MeasurementPOJO list1000 = TestData.list1000;

src/main/java/com/cowtowncoder/jsonperf/dzone/read/DZoneReadMapBoon.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@
88
import org.openjdk.jmh.annotations.Scope;
99
import org.openjdk.jmh.annotations.State;
1010

11+
import com.cowtowncoder.jsonperf.dzone.DZoneReadTestBase;
12+
1113
import org.boon.json.JsonFactory;
1214
import org.boon.json.ObjectMapper;
1315

src/main/java/com/cowtowncoder/jsonperf/dzone/read/DZoneReadMapDslJson.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.cowtowncoder.jsonperf.dzone.read;
22

3+
import com.cowtowncoder.jsonperf.dzone.DZoneReadTestBase;
34
import com.dslplatform.json.DslJson;
45
import org.openjdk.jmh.annotations.OutputTimeUnit;
56
import org.openjdk.jmh.annotations.Scope;

src/main/java/com/cowtowncoder/jsonperf/dzone/read/DZoneReadMapFastjson.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010

1111
import com.alibaba.fastjson.JSON;
1212
import com.alibaba.fastjson.parser.Feature;
13+
import com.cowtowncoder.jsonperf.dzone.DZoneReadTestBase;
1314

1415
@State(Scope.Thread)
1516
@OutputTimeUnit(TimeUnit.SECONDS)

src/main/java/com/cowtowncoder/jsonperf/dzone/read/DZoneReadMapGSON.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import org.openjdk.jmh.annotations.Scope;
99
import org.openjdk.jmh.annotations.State;
1010

11+
import com.cowtowncoder.jsonperf.dzone.DZoneReadTestBase;
1112
import com.google.gson.Gson;
1213
import com.google.gson.GsonBuilder;
1314

src/main/java/com/cowtowncoder/jsonperf/dzone/read/DZoneReadMapJackson.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import org.openjdk.jmh.annotations.Scope;
99
import org.openjdk.jmh.annotations.State;
1010

11+
import com.cowtowncoder.jsonperf.dzone.DZoneReadTestBase;
1112
import com.fasterxml.jackson.databind.ObjectMapper;
1213
import com.fasterxml.jackson.databind.ObjectReader;
1314

src/main/java/com/cowtowncoder/jsonperf/dzone/read/DZoneReadMapJacksonJr.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import org.openjdk.jmh.annotations.Scope;
99
import org.openjdk.jmh.annotations.State;
1010

11+
import com.cowtowncoder.jsonperf.dzone.DZoneReadTestBase;
1112
import com.fasterxml.jackson.jr.ob.JSON;
1213

1314
@State(Scope.Thread)

0 commit comments

Comments
 (0)