ContentProvider
からContentResolver
経由でクエリを実行しても、同じプロセスでSQLiteDatabase
オブジェクトをクエリすると、パフォーマンステストを行ったことがある人は不思議です。私は、ContentResolver
クエリがBinder(Android IPC)を介してデータベースと通信するCursorを返すと推測しています。これは、私がCursor
によって100個のレコードの内容を読み込むと、100個のバインダーメソッド呼び出しが行われることを意味します。私の推測は正しいのでしょうか?そうであれば、同じプロセスでデータベースにアクセスするよりもかなり遅くなりますか?Android ContentProviderのパフォーマンス
14
A
答えて
3
私はまさにそのメスをしていません。私がやったのは、ContentProvider経由で、あるいはSQLiteデータベース経由で、複数のインサートのパフォーマンスを保証することでした。 約1000個のアイテムを挿入しました(1つずつ)。 ContentProvider経由で挿入する方がずっと遅かったです。私のテストでは、ほぼ10%遅くなりました。
+3
1000個のアイテムを1つずつ挿入する場合、 'ContentProviderOperation'を使用して' batchInsert'を実行します。 1000個のアイテムを1つずつ挿入することは、使用するものにかかわらず、非常に遅くなるので、このベンチマークをあまりにも多くは検討しません。私の経験上、「ContentProvider」と「ContentProvider」を使用しないことの違いは、操作が実行される速度/効率に決して下がっていません。 –
関連する問題
- 1. Android ContentProvider Uri Matching
- 2. Android ContentProviderネットワークアクセスを確認
- 3. Android ContentProviderおよびContentProviderOperation.newUpdate()
- 4. ContentProviderとCursorLoaderによる多方向ViewPagerのパフォーマンスの問題
- 5. Android Contentprovider - 挿入メソッド内の更新
- 6. Android BroadcastReceiver、ContentProvider、およびActivity間のデータフロー?
- 7. のContentProviderはソース
- 8. サービスを使用するAndroid ContentProvider
- 9. Android Studio 2.3.3でContentProviderを作成する
- 10. ContentProviderスレッディング
- 11. ContentProviderのラップ/オーバーライド
- 12. ContentProviderのアクセスコンテキスト
- 13. アンドロイドライブラリプロジェクトのContentProvider
- 14. ContentProviderのカスタムメソッド
- 15. はContentProviderの
- 16. Androidと他のプラットフォーム用のアプリケーション間でのロジックコードの再利用:ContentProviderまたはContentProviderには?
- 17. AndroidのパフォーマンスRemoteViews
- 18. HeapWorker Androidのパフォーマンス
- 19. Android。アニメーションのパフォーマンス
- 20. ここで、AndroidのcontentProviderのクエリ内の節
- 21. androidのcontentproviderの返り値(true/false)を決める方法
- 22. contentproviderデータの変更に基づくAndroidアプリウィジェットの更新
- 23. Android SDK:お問い合わせContentProviderのソースコード
- 24. ContentProviderとAIDL/Messengerの使用
- 25. Androidマップアプリケーション - パフォーマンス
- 26. 複数のContentProviderのCursorLoader
- 27. Android CursorLoaderがContentProvider通知に応答しない
- 28. Android ContentProviderでスローされた例外をテストする方法
- 29. Android ContentProvider getType()がいつ、なぜ呼び出されたか
- 30. Androidから - データをSMSから取得するContentProvider - GROUP BY
私は800MHzアンドロイドデバイスでローカルメソッドの呼び出しをリモートメソッドの呼び出しと比較してテストを行いました。単純な26文字のStringパラメータでリモートメソッドを呼び出すには、ローカルメソッドを呼び出すよりも約400ナノ秒かかるだけです。 10,000文字の文字列パラメータを送信するのに2.3ミリ秒かかる。明らかに、より多くのデータが送信される(または受信される)のにかかる時間は長くなります。 – satur9nine
私が習得したこと:ContentProvidersが渡すカーソルにはCursorWindowが含まれ、CursorWindowはCursor 2MBのキャッシュ領域であり、ほとんどのクエリはバッファ全体に収まるでしょう。したがって、カーソルからのデータへのアクセスは通常、すべてのデータが既に存在するためバインダメソッド呼び出しを開始しませんが、巨大なカーソル内のCursorWindow外のデータを読み込もうとすると、ウィンドウが移動し、キャッシュが再送されますバインダー – satur9nine