AndroidのORMライブラリのパフォーマンステストの結果です
お仕事で最近あった実装面でのパフォーマンス向上対策前後も載せてます。
そのうち、Realmにも対応予定ですが、とりあえずOrma(v4.2.0)だけやってます。
結論
Ormaちゃん爆速。
ただリスト化や複数テーブルに渡るColumnの値を見て
リストや合計値などを作るときは、ひと工夫が必要。
また、その手段もきちんと用意されてる。
計測結果
INSERT
Columnが15個くらいのものを10000件INSERT
Library | Total | Average |
---|---|---|
(PureAndroid) | 139273ms | 13.93ms |
Orma | 34072ms | 3.41ms |
UPDATE
10000件をUPDATE (外部キーにしてるIDをランダムに変更)
Library | Total | Average |
---|---|---|
(PureAndroid) | 105389ms | 10.54ms |
Orma | 32892ms | 3.28ms |
お、これは意外だった。
ContentValuesに必要最低限しか渡していないPureAndroidが勝つとおもいきやOrmaの圧勝。
DELETE(10000件)
10000件をひとつずつDELETE
Library | Total | Average |
---|---|---|
(PureAndroid) | 108290ms | 10.83ms |
Orma | 26672 | 2.67ms |
Ormaはどうやってるか知らないけど、PureAndroidはTable消して再作成してます。
DELETE
60000件をDELETE
Library | Total |
---|---|
(PureAndroid) | 66ms |
Orma | 563ms |
Ormaはどうやってるか知らないけど、PureAndroidはTable消して再作成してます。
外部Table参照SUM
Eventテーブルが外部キーのProductを持っているときに
ProductのPriceが500円以上のEventがもつQuantityの合計をだした。
それぞれのDBが異なり、試験環境が異なるので、この表は横に見てください。
Library | SIMPLE | FASTER |
---|---|---|
(PureAndroid) | 1421ms | 18ms |
Orma | 712ms | 41ms |
これは単純にやり方で速くなるよ、というのを見せたかった。
Query発行回数を少なくする、Dataクラスのオブジェクト化をしない、
をすると基本的に早くなります。
SIMPLE: Dataクラスのオブジェクト化してる。読みやすいがおっそい!!
FASTER: 読みづらいがパフォーマンスはすこぶる良い
GooglePlay QRコード
アプリ動かして確認したい人はこちらから。