ObjectBox vs Orma

greenDAOの開発元であるgreenbotが新しいNoSQL ORMのβ版をアナウンスしたようです。

greenrobot.org

いわく、マルチスレッドで使いやすく、バイトコード操作のようなマジカルな方法はとらず、マイグレーションを自動で行えてしかも爆速だと。これらの特徴はOrmaも標榜しているので、気になりますね。

ORMにとってのパフォーマンスは一番重要というわけではないものの、それなりには速くないと困るのは確か。というわけで、まずは軽くベンチマークをとってみました。コードベースはOrmaのリポジトリ内のベンチマークコードに追加した形です。

結論からいうと、読み込みはわりと速いです。

  • 書き込みはOrmaとほぼおなじ水準
    • 何度か繰り返すとOrmaより速いこともあります
    • なおOrmaは手書きの素朴なコードよりも高速に見えますが、手書きのコードでの最適化をサボっているためです
    • Realmが遅いのはよくわかりません。普通にtransaction作ってinsertしているだけだと思うんですが
  • 読み込みはOrmaよりも高速なことが多い
    • 何度か繰り返してみるとだいたい10~30%高速です。これはすごい
    • Realmがかなり遅いのは、すべてのフィールドにアクセスしているため。Realmはlazy loadを行うので、アクセスするフィールドが少ない場合には有利ですが…

具体的なコードは次のPRで確認できます (with Orma v4.1.1)。

Benchmark with ObjectBox by gfx · Pull Request #371 · gfx/Android-Orma · GitHub

詳細:

f:id:gfx:20170125220218p:plain