Skip to content

Commit 4be792e

Browse files
committed
update
1 parent df9706c commit 4be792e

33 files changed

+1625
-103
lines changed

Diff for: src/main/java/com/jsoniter/benchmark/ExternalSerialization.java

+427-24
Large diffs are not rendered by default.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
package com.jsoniter.benchmark.skip_multi_levels;
2+
3+
import com.alibaba.fastjson.JSON;
4+
import com.jsoniter.benchmark.All;
5+
import org.junit.Test;
6+
import org.openjdk.jmh.Main;
7+
import org.openjdk.jmh.annotations.*;
8+
import org.openjdk.jmh.infra.BenchmarkParams;
9+
import org.openjdk.jmh.infra.Blackhole;
10+
import org.openjdk.jmh.runner.RunnerException;
11+
12+
import java.io.IOException;
13+
import java.util.concurrent.TimeUnit;
14+
15+
@State(Scope.Thread)
16+
public class DeserFastjson {
17+
private byte[] testJSON = ("{\"field2\":{" +
18+
"\"1\":[\"1\",\"2\",\"3\",\"4\",\"5\"]," +
19+
"\"2\":[\"1\",\"2\",\"3\",\"4\",\"5\"]," +
20+
"\"3\":[\"1\",\"2\",\"3\",\"4\",\"5\"]" +
21+
"}," +
22+
"\"field1\":[" +
23+
"\"1\",\"2\",\"3\",\"4\",\"5\"," +
24+
"\"1\",\"2\",\"3\",\"4\",\"5\"," +
25+
"\"1\",\"2\",\"3\",\"4\",\"5\"" +
26+
"]," +
27+
"\"field3\":\"x-3\"}").getBytes();
28+
29+
30+
@Benchmark
31+
@BenchmarkMode(Mode.AverageTime)
32+
@OutputTimeUnit(TimeUnit.NANOSECONDS)
33+
public void deser(Blackhole bh) {
34+
for (int i = 0; i < 1000; i++) {
35+
bh.consume(JSON.parseObject(testJSON, TestReadObject.class));
36+
}
37+
}
38+
39+
@Test
40+
public void test() {
41+
TestReadObject obj = JSON.parseObject(testJSON, TestReadObject.class);
42+
System.out.println(obj.field3);
43+
}
44+
45+
public static void main(String[] args) throws IOException, RunnerException {
46+
All.loadJMH();
47+
Main.main(new String[]{
48+
"skip_multi_levels.DeserFastjson",
49+
"-i", "5",
50+
"-wi", "5",
51+
"-f", "1",
52+
});
53+
}
54+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
package com.jsoniter.benchmark.with_10_double_fields;
2+
3+
import com.alibaba.fastjson.JSON;
4+
import com.jsoniter.benchmark.All;
5+
import org.openjdk.jmh.Main;
6+
import org.openjdk.jmh.annotations.*;
7+
import org.openjdk.jmh.infra.BenchmarkParams;
8+
import org.openjdk.jmh.infra.Blackhole;
9+
import org.openjdk.jmh.runner.RunnerException;
10+
11+
import java.io.IOException;
12+
import java.util.concurrent.TimeUnit;
13+
14+
@State(Scope.Thread)
15+
public class DeserFastjson {
16+
private byte[] testJSON;
17+
18+
19+
@Setup(Level.Trial)
20+
public void benchSetup(BenchmarkParams params) {
21+
testJSON = TestObject.createTestJSON();
22+
}
23+
24+
@Benchmark
25+
@BenchmarkMode(Mode.AverageTime)
26+
@OutputTimeUnit(TimeUnit.NANOSECONDS)
27+
public void deser(Blackhole bh) {
28+
for (int i = 0; i < 1000; i++) {
29+
bh.consume(JSON.parseObject(testJSON, TestObject.class));
30+
}
31+
}
32+
public static void main(String[] args) throws IOException, RunnerException {
33+
All.loadJMH();
34+
Main.main(new String[]{
35+
"with_10_double_fields.DeserFastjson",
36+
"-i", "5",
37+
"-wi", "5",
38+
"-f", "1",
39+
});
40+
}
41+
}

Diff for: src/main/java/com/jsoniter/benchmark/with_10_double_fields/DeserJsoniter.java

+3
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import com.jsoniter.DecodingMode;
44
import com.jsoniter.JsonIterator;
55
import com.jsoniter.benchmark.All;
6+
import com.jsoniter.extra.Base64FloatSupport;
67
import com.jsoniter.output.EncodingMode;
78
import com.jsoniter.output.JsonStream;
89
import com.jsoniter.spi.TypeLiteral;
@@ -31,9 +32,11 @@ public class DeserJsoniter {
3132

3233
@Setup(Level.Trial)
3334
public void benchSetup(BenchmarkParams params) {
35+
Base64FloatSupport.enableEncodersAndDecoders();
3436
JsonStream.setMode(EncodingMode.DYNAMIC_MODE);
3537
JsonIterator.setMode(DecodingMode.DYNAMIC_MODE_AND_MATCH_FIELD_WITH_HASH);
3638
testJSON = TestObject.createTestJSON();
39+
System.out.println(new String(testJSON));
3740
iter = new JsonIterator();
3841
typeLiteral = TypeLiteral.create(TestObject.class);
3942
}

Diff for: src/main/java/com/jsoniter/benchmark/with_10_double_fields/DeserPb.java

+12
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,18 @@ public void benchSetup(BenchmarkParams params) {
3535
.setField9(43.161592)
3636
.setField10(0.112)
3737
.build();
38+
obj = Pb.PbTestObject.newBuilder()
39+
.setField1(31415926)
40+
.setField2(61415923)
41+
.setField3(31415269)
42+
.setField4(53141926)
43+
.setField5(13145926)
44+
.setField6(43115926)
45+
.setField7(31419265)
46+
.setField8(23141596)
47+
.setField9(43161592)
48+
.setField10(112)
49+
.build();
3850
testData = obj.toByteArray();
3951
}
4052

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
package com.jsoniter.benchmark.with_10_double_fields;
2+
3+
import com.alibaba.fastjson.serializer.JSONSerializer;
4+
import com.alibaba.fastjson.serializer.SerializeConfig;
5+
import com.alibaba.fastjson.serializer.SerializeWriter;
6+
import com.alibaba.fastjson.util.IOUtils;
7+
import com.jsoniter.benchmark.All;
8+
import org.openjdk.jmh.Main;
9+
import org.openjdk.jmh.annotations.*;
10+
import org.openjdk.jmh.infra.BenchmarkParams;
11+
import org.openjdk.jmh.infra.Blackhole;
12+
import org.openjdk.jmh.runner.RunnerException;
13+
14+
import java.io.ByteArrayOutputStream;
15+
import java.io.IOException;
16+
import java.util.concurrent.TimeUnit;
17+
18+
@State(Scope.Thread)
19+
public class SerFastjson {
20+
21+
private TestObject testObject;
22+
private ByteArrayOutputStream byteArrayOutputStream;
23+
private SerializeConfig serializeConfig;
24+
25+
@Setup(Level.Trial)
26+
public void benchSetup(BenchmarkParams params) {
27+
testObject = TestObject.createTestObject();
28+
byteArrayOutputStream = new ByteArrayOutputStream();
29+
serializeConfig = SerializeConfig.getGlobalInstance();
30+
}
31+
32+
33+
@Benchmark
34+
@BenchmarkMode(Mode.AverageTime)
35+
@OutputTimeUnit(TimeUnit.NANOSECONDS)
36+
public void ser(Blackhole bh) throws IOException {
37+
for (int i = 0; i < 1000; i++) {
38+
byteArrayOutputStream.reset();
39+
SerializeWriter writer = new SerializeWriter();
40+
JSONSerializer serializer = new JSONSerializer(writer, serializeConfig);
41+
serializer.write(testObject);
42+
writer.writeToEx(byteArrayOutputStream, IOUtils.UTF8);
43+
serializer.close();
44+
bh.consume(byteArrayOutputStream);
45+
}
46+
}
47+
public static void main(String[] args) throws IOException, RunnerException {
48+
All.loadJMH();
49+
Main.main(new String[]{
50+
"with_10_double_fields.SerFastjson",
51+
"-i", "5",
52+
"-wi", "5",
53+
"-f", "1",
54+
});
55+
}
56+
}

Diff for: src/main/java/com/jsoniter/benchmark/with_10_double_fields/SerJsoniter.java

+2
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import com.jsoniter.DecodingMode;
44
import com.jsoniter.JsonIterator;
55
import com.jsoniter.benchmark.All;
6+
import com.jsoniter.extra.Base64FloatSupport;
67
import com.jsoniter.output.EncodingMode;
78
import com.jsoniter.output.JsonStream;
89
import org.junit.Test;
@@ -31,6 +32,7 @@ public class SerJsoniter {
3132

3233
@Setup(Level.Trial)
3334
public void benchSetup(BenchmarkParams params) {
35+
Base64FloatSupport.enableEncodersAndDecoders();
3436
JsonStream.setMode(EncodingMode.DYNAMIC_MODE);
3537
JsonIterator.setMode(DecodingMode.DYNAMIC_MODE_AND_MATCH_FIELD_WITH_HASH);
3638
testObject = TestObject.createTestObject();

Diff for: src/main/java/com/jsoniter/benchmark/with_10_double_fields/TestObject.java

+14
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,20 @@ public static TestObject createTestObject() {
3131
testObject.field10 = 0.112;
3232
return testObject;
3333
}
34+
public static TestObject createTestObject2() {
35+
TestObject testObject = new TestObject();
36+
testObject.field1 = 31415926;
37+
testObject.field2 = 61415923;
38+
testObject.field3 = 31415269;
39+
testObject.field4 = 53141926;
40+
testObject.field5 = 13145926;
41+
testObject.field6 = 43115926;
42+
testObject.field7 = 31419265;
43+
testObject.field8 = 23141596;
44+
testObject.field9 = 43161592;
45+
testObject.field10 = 112;
46+
return testObject;
47+
}
3448

3549
public static byte[] createTestJSON() {
3650
return JsonStream.serialize(createTestObject()).getBytes();
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
package com.jsoniter.benchmark.with_10_int_fields;
2+
3+
import com.alibaba.fastjson.JSON;
4+
import com.jsoniter.benchmark.All;
5+
import org.openjdk.jmh.Main;
6+
import org.openjdk.jmh.annotations.*;
7+
import org.openjdk.jmh.infra.BenchmarkParams;
8+
import org.openjdk.jmh.infra.Blackhole;
9+
import org.openjdk.jmh.runner.RunnerException;
10+
11+
import java.io.IOException;
12+
import java.util.concurrent.TimeUnit;
13+
14+
@State(Scope.Thread)
15+
public class DeserFastjson {
16+
private byte[] testJSON;
17+
18+
19+
@Setup(Level.Trial)
20+
public void benchSetup(BenchmarkParams params) {
21+
testJSON = TestObject.createTestJSON();
22+
}
23+
24+
@Benchmark
25+
@BenchmarkMode(Mode.AverageTime)
26+
@OutputTimeUnit(TimeUnit.NANOSECONDS)
27+
public void deser(Blackhole bh) {
28+
for (int i = 0; i < 1000; i++) {
29+
bh.consume(JSON.parseObject(testJSON, TestObject.class));
30+
}
31+
}
32+
public static void main(String[] args) throws IOException, RunnerException {
33+
All.loadJMH();
34+
Main.main(new String[]{
35+
"with_10_int_fields.DeserFastjson",
36+
"-i", "5",
37+
"-wi", "5",
38+
"-f", "1",
39+
});
40+
}
41+
}

Diff for: src/main/java/com/jsoniter/benchmark/with_10_int_fields/DeserJsoniter.java

+29-5
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@
1414
import org.openjdk.jmh.runner.RunnerException;
1515

1616
import java.io.IOException;
17+
import java.util.Arrays;
18+
import java.util.List;
1719
import java.util.concurrent.TimeUnit;
1820

1921
import static org.junit.Assert.assertEquals;
@@ -25,15 +27,37 @@
2527
@State(Scope.Thread)
2628
public class DeserJsoniter {
2729

28-
private byte[] testJSON;
30+
private List<byte[]> testJSON;
2931
private JsonIterator iter;
3032
private TypeLiteral<TestObject> typeLiteral;
3133

3234
@Setup(Level.Trial)
3335
public void benchSetup(BenchmarkParams params) {
3436
JsonStream.setMode(EncodingMode.DYNAMIC_MODE);
3537
JsonIterator.setMode(DecodingMode.DYNAMIC_MODE_AND_MATCH_FIELD_WITH_HASH);
36-
testJSON = TestObject.createTestJSON();
38+
testJSON = Arrays.asList(
39+
TestObject.createRandomTestJson(),
40+
TestObject.createRandomTestJson(),
41+
TestObject.createRandomTestJson(),
42+
TestObject.createRandomTestJson(),
43+
TestObject.createRandomTestJson(),
44+
TestObject.createRandomTestJson(),
45+
TestObject.createRandomTestJson(),
46+
TestObject.createRandomTestJson(),
47+
TestObject.createRandomTestJson(),
48+
TestObject.createRandomTestJson());
49+
// byte[] fixed = TestObject.createRandomTestJson();
50+
// testJSON = Arrays.asList(
51+
// fixed,
52+
// fixed,
53+
// fixed,
54+
// fixed,
55+
// fixed,
56+
// fixed,
57+
// fixed,
58+
// fixed,
59+
// fixed,
60+
// fixed);
3761
iter = new JsonIterator();
3862
typeLiteral = TypeLiteral.create(TestObject.class);
3963
}
@@ -43,16 +67,16 @@ public void benchSetup(BenchmarkParams params) {
4367
@OutputTimeUnit(TimeUnit.NANOSECONDS)
4468
public void deser(Blackhole bh) throws IOException {
4569
for (int i = 0; i < 1000; i++) {
46-
iter.reset(testJSON);
70+
iter.reset(testJSON.get(i % 10));
4771
bh.consume(iter.read(typeLiteral));
4872
}
4973
}
5074

5175
@Test
5276
public void test() throws IOException {
5377
benchSetup(null);
54-
System.out.println(new String(testJSON));
55-
iter.reset(testJSON);
78+
System.out.println(new String(testJSON.get(0)));
79+
iter.reset(testJSON.get(0));
5680
assertEquals(31415926, iter.read(typeLiteral).field1);
5781
}
5882

0 commit comments

Comments
 (0)