Skip to content

Commit 64083f7

Browse files
authored
Fastjson 2.0.51 + fastjson features (#104)
1 parent 4e95229 commit 64083f7

File tree

5 files changed

+51
-4
lines changed

5 files changed

+51
-4
lines changed

build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,8 @@ dependencies {
4545
implementation group: 'com.dslplatform', name: 'dsl-json', version: "${dslJsonVersion}"
4646
annotationProcessor group: 'com.dslplatform', name: 'dsl-json', version: "${dslJsonVersion}"
4747
// FastJson
48-
implementation group: 'com.alibaba.fastjson2', name: 'fastjson2', version: '2.0.48'
49-
implementation group: 'com.alibaba.fastjson2', name: 'fastjson2-incubator-vector', version: '2.0.48'
48+
implementation group: 'com.alibaba.fastjson2', name: 'fastjson2', version: '2.0.51'
49+
implementation group: 'com.alibaba.fastjson2', name: 'fastjson2-incubator-vector', version: '2.0.51'
5050
// FlexJson
5151
implementation group: 'net.sf.flexjson', name: 'flexjson', version: '3.3'
5252
// GENSON

src/main/java/com/github/fabienrenaud/jjb/JsonBench.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,10 @@ public Object fastjson() throws Exception {
5151
return null;
5252
}
5353

54+
public Object fastjson_features() throws Exception {
55+
return null;
56+
}
57+
5458
public Object jsonio() throws Exception {
5559
return null;
5660
}

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

Lines changed: 31 additions & 0 deletions
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

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515
* @author Fabien Renaud
1616
*/
1717
public class Deserialization extends JsonBench {
18-
1918
public JsonSource JSON_SOURCE() {
2019
return CLI_JSON_SOURCE;
2120
}
@@ -62,6 +61,12 @@ public Object fastjson() {
6261
return JSON.parseObject(JSON_SOURCE().nextByteArray(), JSON_SOURCE().pojoType());
6362
}
6463

64+
@Benchmark
65+
@Override
66+
public Object fastjson_features() {
67+
return JSON.parseObject(JSON_SOURCE().nextByteArray(), JSON_SOURCE().pojoType(), JSON_SOURCE().fastjsonFeatures().readerContext());
68+
}
69+
6570
@Benchmark
6671
@Override
6772
public Object flexjson() throws JsonSyntaxException {

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

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313
import java.io.ByteArrayOutputStream;
1414

1515
public class Serialization extends JsonBench {
16-
1716
public JsonSource JSON_SOURCE() {
1817
return CLI_JSON_SOURCE;
1918
}
@@ -74,6 +73,14 @@ public Object fastjson() throws Exception {
7473
return baos;
7574
}
7675

76+
@Benchmark
77+
@Override
78+
public Object fastjson_features() throws Exception {
79+
ByteArrayOutputStream baos = JsonUtils.byteArrayOutputStream();
80+
JSON.writeTo(baos, JSON_SOURCE().nextPojo(), JSON_SOURCE().fastjsonFeatures().writerContext());
81+
return baos;
82+
}
83+
7784
@Benchmark
7885
@Override
7986
public Object flexjson() {

0 commit comments

Comments
 (0)