fastjson ベンチマーク


fastjson-1.2.11ではシリアル化性能が大幅に向上し、逆シリアル化性能も向上したため、他のシリアル化ライブラリとの性能比較テストを行いました。

テスト シナリオ

https://github から、さまざまなシリアル化ライブラリの作成者によって認められているテストを使用します。 com /eishay/jvm-serializers、公式テストではまだ最新バージョンの fastjson が使用されていないため、最新の API を使用するようにフォークして変更しました。コードはここにありますhttps://github.com /wenshao/jvm-serializers /tree/fastjson-1.2.11

テストの実行

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

クラス構造

eihay のシナリオには 3 つのクラスがあり、クラス構造は次のとおりです。

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;
}

詳細なコードはこちらを参照してください:

テストシナリオは

media.1.cksで、対応するjsonは次のとおりです

{"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}}

fastjson では、BeanToArray モードが有効な場合、対応する json は次のとおりです:

[[[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]]