デバイスのパフォーマンスの問題を調べるのにかなりの時間を費やしてきましたが、かなりの数のアプリがすべてデータベースの読み取り/書き込みを行っていることに気付きました..
Contacts API を使用して新しい連絡先とデータ行を挿入することから始めましたが、非常に遅くなりました。約 1500 行を挿入するのに 1 分 18 秒かかります (250 の生の連絡先と 1250 のデータ行)。
私は別のアプリでパフォーマンス挿入のために挿入ヘルパーを使用していたので、別の挿入メソッドを使用して別のデータベースに書き込むテストアプリを作成することにしました。
各データベースには 1 つのテーブルがあり、それぞれに 4 つの列があります: _ID、名前、時間、およびブロブ (すべて「文字列」型) - 連絡先プロバイダーがデータ列を定義するのと同じです。
_ID は自動インクリメント pk で、Name は同じもの '1234567890' を挿入するだけであり、time は現在のシステム時刻 (ミリ単位) であり、Blob は文字 'A' で構成される長さ 6400 の文字列です...
最初に一括挿入を確認しましたが、定義したすべての挿入をループするだけで、挿入を個別に実行するのと同じくらい遅くなります(またはパフォーマンスへの影響はごくわずかです)。
挿入を行うために 3 つの異なるメソッドをテストしました: ContentValues w/ db.insert メソッド: SQLiteStatement w/ statement.execute() (トランザクション内で実行)。トランザクション付きの SqliteInsertHelper。
いくつかのコードを提供できますが、InsertHelper から最高のパフォーマンスを得て、なぜ廃止されたのか疑問に思っています。
100 レコードを挿入する時間
何か案は?