GAE/JRubyにおけるMessagePackのベンチマーク

 こんにちは。那由多屋の加藤です。

 昨日、「MessagePack for JavaJRubyで使いたい!」という事で、MessagePack for Javaと格闘しましたが、型変換の前にあえなく敗退。

 でもやはり、JRuby上でMessagePackを使いたかったので、Pure Ruby版を実装してみました!ごく一部ですが・・・。

http://gist.github.com/319435

 まずは、ベンチマークできる程度に実装してみました。所要時間は30分くらい。下記のデータ型のデシリアライズを実装しています。

  • Positive FixNum
  • nil
  • uint8
  • map16
  • double
  • FixRaw
  • FixArray

ベンチマーク

 先日の、GAE/JRubyにおけるJSONベンチマークとほぼ同じ環境でベンチマークを行ってみました。

 要素数40,000のハッシュテーブルをデシリアライズする時間を計測しました。5回計測して、その平均値を比べてみます。なお、JSONデータは7.77MB、同じ内容のMessagePackデータは3.8MBでした。

開発環境 本番環境
json-jruby 0.556 秒 1.469 秒
msgpack_pure 0.768 秒 2.450 秒

 json-jrubyに比べると少々遅いですが、なんとか実用になる速度ではないでしょうか。