LoginSignup
2
3

More than 5 years have passed since last update.

ORM Benchmark

Posted at

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コード

アプリ動かして確認したい人はこちらから。

qr20170311030251150.png

リンク

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3