我很好奇,如果有人在查詢ContentProvider
通過ContentResolver
與在同一過程中查詢SQLiteDatabase
對象進行任何性能測試。我猜測ContentResolver
查詢返回一個Cursor,它通過一個Binder(Android IPC)與數據庫進行通信。這意味着如果我通過Cursor
讀取了100條記錄的內容,那將導致100個Binder方法調用。我的猜測是否正確,如果是這樣,那會比在同一過程中訪問數據庫慢得多?Android ContentProvider性能
14
A
回答
3
我還沒有完成那個測量。我所做的是通過ContentProvider或直接通過SQLite數據庫來確定多個插入的性能。 我插入了大約1000個項目(一個接一個)。通過ContentProvider插入要慢得多。在我的測試中,速度慢了近10%。
+3
如果您打算逐個插入1000個項目,那麼您將使用「ContentProviderOperation」並執行一個'batchInsert'。無論您使用什麼內容,逐個插入1000個項目都會非常慢,所以我不會太多地考慮這個基準。根據我的經驗,「使用」ContentProvider「」和「不使用」ContentProvider「」之間的區別決不會落在執行操作的速度/效率上。 – 2012-10-15 17:23:28
相關問題
- 1. Android ContentProvider和ContentProviderOperation.newUpdate()
- 2. Android contentprovider鎖定
- 3. Android Beam ContentProvider Uri失敗
- 4. android:有關ContentProvider的問題
- 5. Android - 在contentProvider中選擇max
- 6. 的Android定製的ContentProvider
- 7. 沒有ContentProvider的Android Sqlite
- 8. ContentProvider中的SQLException
- 9. AppWidgetProvider和ContentProvider
- 10. Android的ContentProvider的查詢條件問題
- 11. Android ContentProvider訪問練習列表?
- 12. 的Android的ContentProvider沒有返回Phone.NUMBER
- 13. Android ContentProvider數據庫查詢多個表
- 14. Android - 從SMS ContentProvider檢索數據 - GROUP BY
- 15. Android SDK:聯繫人ContentProvider的源代碼
- 16. 的Android SQLite的用的ContentProvider或SQLiteOpenHelper
- 17. 創建和使用的ContentProvider爲Android
- 18. 我的Android ContentProvider無法找到ContentResolver
- 19. Android - 使用Dao模式和contentProvider
- 20. Android CursorLoader對ContentProvider通知沒有響應
- 21. UriMatcher與ContentProvider中的uri不匹配Android
- 22. Android:使用ContentProvider和Loader刷新ListFragement
- 23. Android png性能
- 24. Android getDrawable性能
- 25. HeapWorker Android性能
- 26. Android HttpClient性能
- 27. Android Viewpager性能
- 28. 對於ContentProvider,android:syncable = true?
- 29. 刪除ContactsContract-的ContentProvider
- 30. Android性能改進
作爲一個方面說明,我在800MHz的android設備上進行了測試,比較了調用本地方法和遠程方法的調用。使用簡單的26個字符調用遠程方法字符串參數比調用本地方法花費的時間大約400納秒。發送10,000個字符的字符串參數需要2.3毫秒的時間。很明顯,發送(或接收)的數據越多,需要的時間越長。 – satur9nine 2011-07-11 19:14:45
我學到的東西:ContentProviders傳遞的遊標包含CursorWindow,CursorWindow是遊標大小爲2MB的緩存區域,大多數查詢都適合整個緩衝區。因此,從Cursor訪問數據通常不會啓動Binder方法調用,因爲所有數據都已經存在,但是如果您試圖在巨大的光標中讀取CursorWindow之外的數據,那麼Window將需要移動並且緩存將重新發送粘合劑。 – satur9nine 2014-06-04 23:07:59