greenDAOの開発元であるgreenbotが新しいNoSQL ORMのβ版をアナウンスしたようです。
いわく、マルチスレッドで使いやすく、バイトコード操作のようなマジカルな方法はとらず、マイグレーションを自動で行えてしかも爆速だと。これらの特徴は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
詳細: