Skip to content

Commit 5debaed

Browse files
committed
fastjsonFeatures behind JsonProvider
1 parent 1086101 commit 5debaed

File tree

3 files changed

+33
-28
lines changed

3 files changed

+33
-28
lines changed

src/main/java/com/github/fabienrenaud/jjb/data/JsonSource.java

+31
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
11
package com.github.fabienrenaud.jjb.data;
22

3+
import com.alibaba.fastjson2.JSONFactory;
4+
import com.alibaba.fastjson2.JSONReader;
5+
import com.alibaba.fastjson2.JSONWriter;
6+
import com.alibaba.fastjson2.reader.ObjectReaderProvider;
7+
import com.alibaba.fastjson2.writer.ObjectWriterProvider;
38
import com.github.fabienrenaud.jjb.RandomUtils;
49
import com.github.fabienrenaud.jjb.data.gen.DataGenerator;
510
import com.github.fabienrenaud.jjb.provider.JsonProvider;
@@ -29,6 +34,8 @@ public abstract class JsonSource<T> {
2934
private final StreamSerializer<T> streamSerializer;
3035
private final StreamDeserializer<T> streamDeserializer;
3136

37+
private final FastjsonProvider fastjsonFeatures;
38+
3239
JsonSource(int quantity, int individualSize, JsonProvider provider, DataGenerator<T> dataGenerator, StreamSerializer<T> streamSerializer, StreamDeserializer<T> streamDeserializer) {
3340
this.provider = provider;
3441

@@ -49,6 +56,24 @@ public abstract class JsonSource<T> {
4956
}
5057
return arr;
5158
});
59+
60+
ObjectWriterProvider featuresWriterProvider = new ObjectWriterProvider();
61+
featuresWriterProvider.setDisableAutoType(true);
62+
featuresWriterProvider.setDisableArrayMapping(true);
63+
featuresWriterProvider.setDisableJSONB(true);
64+
featuresWriterProvider.setDisableReferenceDetect(true);
65+
JSONFactory.createWriteContext(featuresWriterProvider);
66+
67+
ObjectReaderProvider featuresReaderProvider = new ObjectReaderProvider();
68+
featuresReaderProvider.setDisableArrayMapping(true);
69+
featuresReaderProvider.setDisableAutoType(true);
70+
featuresReaderProvider.setDisableJSONB(true);
71+
featuresReaderProvider.setDisableReferenceDetect(true);
72+
featuresReaderProvider.setDisableSmartMatch(true);
73+
74+
fastjsonFeatures = new FastjsonProvider(
75+
JSONFactory.createReadContext(featuresReaderProvider),
76+
JSONFactory.createWriteContext(featuresWriterProvider));
5277
}
5378

5479
private void populateFields(int quantity, int individualSize) {
@@ -124,4 +149,10 @@ public StreamDeserializer<T> streamDeserializer() {
124149
private int index(int bound) {
125150
return bound == 1 ? 0 : RandomUtils.nextInt(bound);
126151
}
152+
153+
public FastjsonProvider fastjsonFeatures() {
154+
return fastjsonFeatures;
155+
}
156+
157+
public record FastjsonProvider (JSONReader.Context readerContext, JSONWriter.Context writerContext) {}
127158
}

src/main/java/com/github/fabienrenaud/jjb/databind/Deserialization.java

+1-14
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
package com.github.fabienrenaud.jjb.databind;
22

33
import com.alibaba.fastjson2.JSON;
4-
import com.alibaba.fastjson2.JSONReader;
5-
import com.alibaba.fastjson2.reader.ObjectReaderProvider;
64
import com.bluelinelabs.logansquare.LoganSquare;
75
import com.github.fabienrenaud.jjb.JsonBench;
86
import com.github.fabienrenaud.jjb.data.JsonSource;
@@ -17,17 +15,6 @@
1715
* @author Fabien Renaud
1816
*/
1917
public class Deserialization extends JsonBench {
20-
static final ObjectReaderProvider featuresProvider = new ObjectReaderProvider();
21-
static final JSONReader.Context featuresContext;
22-
static {
23-
featuresProvider.setDisableArrayMapping(true);
24-
featuresProvider.setDisableAutoType(true);
25-
featuresProvider.setDisableJSONB(true);
26-
featuresProvider.setDisableReferenceDetect(true);
27-
featuresProvider.setDisableSmartMatch(true);
28-
featuresContext = new JSONReader.Context(featuresProvider);
29-
}
30-
3118
public JsonSource JSON_SOURCE() {
3219
return CLI_JSON_SOURCE;
3320
}
@@ -77,7 +64,7 @@ public Object fastjson() {
7764
@Benchmark
7865
@Override
7966
public Object fastjson_features() {
80-
return JSON.parseObject(JSON_SOURCE().nextByteArray(), JSON_SOURCE().pojoType(), featuresContext);
67+
return JSON.parseObject(JSON_SOURCE().nextByteArray(), JSON_SOURCE().pojoType(), JSON_SOURCE().fastjsonFeatures().readerContext());
8168
}
8269

8370
@Benchmark

src/main/java/com/github/fabienrenaud/jjb/databind/Serialization.java

+1-14
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,6 @@
11
package com.github.fabienrenaud.jjb.databind;
22

33
import com.alibaba.fastjson2.JSON;
4-
import com.alibaba.fastjson2.JSONFactory;
5-
import com.alibaba.fastjson2.JSONWriter;
6-
import com.alibaba.fastjson2.writer.ObjectWriterProvider;
74
import com.bluelinelabs.logansquare.LoganSquare;
85
import com.github.fabienrenaud.jjb.JsonBench;
96
import com.github.fabienrenaud.jjb.JsonUtils;
@@ -16,16 +13,6 @@
1613
import java.io.ByteArrayOutputStream;
1714

1815
public class Serialization extends JsonBench {
19-
static final ObjectWriterProvider featuresProvider = new ObjectWriterProvider();
20-
static final JSONWriter.Context featuresContext;
21-
static {
22-
featuresProvider.setDisableAutoType(true);
23-
featuresProvider.setDisableArrayMapping(true);
24-
featuresProvider.setDisableJSONB(true);
25-
featuresProvider.setDisableReferenceDetect(true);
26-
featuresContext = JSONFactory.createWriteContext(featuresProvider);
27-
}
28-
2916
public JsonSource JSON_SOURCE() {
3017
return CLI_JSON_SOURCE;
3118
}
@@ -90,7 +77,7 @@ public Object fastjson() throws Exception {
9077
@Override
9178
public Object fastjson_features() throws Exception {
9279
ByteArrayOutputStream baos = JsonUtils.byteArrayOutputStream();
93-
JSON.writeTo(baos, JSON_SOURCE().nextPojo(), featuresContext);
80+
JSON.writeTo(baos, JSON_SOURCE().nextPojo(), JSON_SOURCE().fastjsonFeatures().writerContext());
9481
return baos;
9582
}
9683

0 commit comments

Comments
 (0)