fastjson Benchmark
In fastjson-1.2.11, the serialization performance has been greatly improved, and the deserialization performance has also been improved, so we did a performance comparison test with other serialization libraries.
Test scenario
Use a test that is recognized by the authors of various serialization libraries, from https://github.com /eishay/jvm-serializers, since the official test has not yet used the latest version of fastjson, so I forked and modified to use the latest api, the code is herehttps://github.com/wenshao/jvm-serializers /tree/fastjson-1.2.11
Run test
git clone https://github.com/wenshao/jvm-serializers.git cd jvm-serializers/tpc make ./run-bench.sh json/jackson+afterburner/databind,json/fastjson/databind,json/fastjson_array/databind,protobuf,json/jackson/databind,msgpack/databind
Class structure
eihay’s scenario has three classes. The class structure is as follows
class MediaContent { public Media media; public Image[] images; } class Media implements java.io.Serializable { public enum Player { JAVA, FLASH } public String uri; public String title; // Can be unset. public int width; public int height; public String format; public long duration; public long size; public boolean hasBitrate; public List<String> persons; public Player player; public String copyright; // Can be unset. } class Image { public enum Size { SMALL, LARGE } public String uri; public String title; // Can be null public int width; public int height; public Size size; }
See the detailed code here:
- https://github.com/wenshao/jvm-serializers/blob/fastjson-1.2.11/tpc/src/data/media/ MediaContent.java
- https://github.com/wenshao/jvm-serializers/blob/fastjson-1.2.11/tpc/src/data/media/Media.java
- https://github.com/wenshao/jvm-serializers/blob/fastjson-1.2.11/tpc/src/data/media/Image.java
Test data
The test scenario is media.1.cks, and the corresponding json is as follows
{"images":[{"height":768,"size":"LARGE","title":"Javaone Keynote","uri":"http://javaone.com/keynote_large.jpg","width":1024},{"height":240,"size":"SMALL","title":"Javaone Keynote","uri":"http://javaone.com/keynote_small.jpg","width":320}],"media":{"bitrate":262144,"duration":18000000,"format":"video/mpg4","height":480,"persons":["Bill Gates","Steve Jobs"],"player":"JAVA","size":58982400,"title":"Javaone Keynote","uri":"http://javaone.com/keynote.mpg","width":640}}# In ##fastjson, if the BeanToArray mode is enabled, the corresponding json is:
[[[768,1,"Javaone Keynote","http://javaone.com/keynote_large.jpg",1024],[240,0,"Javaone Keynote","http://javaone.com/keynote_small.jpg",320]],[262144,null,18000000,"video/mpg4",480,["Bill Gates","Steve Jobs"],0,58982400,"Javaone Keynote","http://javaone.com/keynote.mpg",640]]