JSONICのパフォーマンス向上はここらが限界

Jackson vs JSONIC、結果はJacksonの圧勝」に対向するため、数日に渡ってJSONICのパフォーマンスチューニングを行ってきましたが、ここらで限界というところまできてしまいました。jacksonに速度で負けている理由の大半は、IOのバッファリングにあるらしく、そこをちょっといじるだけでずいぶん速くなるというのが結論。バッファリングの問題であるということから想定される通り、速度差の一番の原因は、String型に出力する場合にはほとんど関係ないというのが残念なところ。

- Jackson JSONIC 速度比
Map1000×List1000 502.6083 614.5989 1 : 1.22
Map1000×List10000 4199.0609 8439.9083 1 : 2.01
Map10000×List1000 4294.5540 6303.7775 1 : 1.47
Map100×Object 2.7032 0.6869 1 : 0.25
Map1K×Object 5.7042 3.8384 1 : 0.67
Map10K×Object 38.3262 50.9306 1 : 1.33
Map100K×Object 277.4243 395.4630 1 : 1.43
List100×Object 4.6443 3.4030 1 : 0.73
List1K×Object 5.7136 7.9831 1 : 1.40
List10K×Object 35.2560 46.1092 1 : 1.31
List100K×Object 260.0687 333.4722 1 : 1.28

まだまだ勝利には遠すぎるのですが、1.2〜1.5倍程度に収まっているのでまぁいいかという気になってます。というより、もはや最低限の記述しかしておらず、何が差を生んでるのかさっぱりわからない状況だったり。一応、上記版をJSONIC 1.2.5 ベータ2としてsourceforge.jpにアップロードしておきました。

http://sourceforge.jp/projects/jsonic/releases/

クラスに対する処理のディスパッチや文字列のエスケープ方法など他の場所も修正したので、全体的にパフォーマンスは向上しているはずなのですが、大量のオブジェクトを繰り返し使用する場合には意味があるくらいで、普通の使い方してる分には1、2%程度しか変わらない雰囲気。う〜む。