web-dev-qa-db-ja.com

ORMのパフォーマンス:greenDAOはORMLiteより高速ですか?

私はアプリケーションでORMLiteを使用しており、greenDAOに移行するかどうかを検討していました。

パフォーマンスはその決定の大きな部分であり、 greenDAOの機能ページ は次のように述べています。

同じ特定のエンティティに対して、greenDAOはエンティティの挿入と更新を2倍以上高速化し、エンティティのロードはORMLiteよりも4.5倍高速にロードします。
...
(図とグラフは2011年10月23日更新)

私は ORMLiteの構成ファイルの生成 ステップは実行時にリフレクションの必要性を取り除くべきだと思いました。

ORMLite changlog は、設定ファイル機能がリリースされた後にgreenDAOベンチマークが実行されたことを示唆していますが、テスト用に静的設定ファイルが生成されたかどうかは、greenDAO機能のページには明示されていません。

4.26:2011年9月26日(svn r1978)
* Android:注釈に関するDaoの作成パフォーマンスの問題を回避するためにフィールド構成ユーティリティが追加されました。

その後、ORMLiteパフォーマンスの修正も行われました。

4.40:2012年4月16日(svn r2516)
* Android:DAO作成時のパフォーマンスの大きなバグ修正。外部フィールドは常にテーブル設定の代わりにリフレクションを使用していました。

GreenDAOとORMLiteのパフォーマンスに大きな違いがあるかどうか誰かが確認できますか?ありがとう!

31
Dan J

ORMLiteとGreenDaoのパフォーマンスを生のSQLiteと比較するために使用したGithubプロジェクトを公開しました。
https://github.com/daj/Android-orm-b​​enchmark

このプロジェクトでは、インメモリデータベースのパフォーマンスをディスク上のデータベースと比較することもできます。

見出しの結果は次のとおりです。

GreenDaoはORMLiteよりもはるかに高速です。それは大まかにです:

  • 大量のオブジェクトの書き込みが3倍速くなりました。
  • 1つのテーブルのすべての10000エントリの読み取りが50%速くなりました。
  • 単一行のインデックス付き読み取りで2倍から3倍速くなります(両方とも非常に高速でしたが)。
  • 10000エントリテーブルで100レコードのLIKE検索を実行すると、15倍速くなります。

プロジェクトには、ナイーブな生のSQLiteベンチマークと 最適化されたSQLiteベンチマーク の両方が含まれています。

GreenDao vsun最適化された生のSQLite

  • GreenDaoは書き込みベンチマークで2倍高速です。
  • GreenDaoは読み取りベンチマークで25%遅くなります。

GreenDaoと最適化された生のSQLite

  • GreenDaoは、読み取りと書き込みのベンチマークで50%遅くなります。

詳細な結果については、上記のGithubリポジトリを参照してください。

もちろん、ベンチマークコードにバグがある可能性があります...見つかった場合は、フォークして修正し、プルリクエストを送信してください! :-)

免責事項:ORMLiteではなくGreenDaoを選択する前に、必ず独自の調査を行ってください。

64
Dan J