Android批量插入數據性能優化
做數據同步時遇到一個問題,在下載數據時需要批量的向sqlite插入數據,雖然數據不算多,但是實際測試中每插入一條數據需要將近50ms的時間,這意味著1000條數據就需要花費50s左右的時間,對于用戶來說,體驗太差了,必須要優化。
在sqlite插入數據的時候默認一條語句就是一個事務,有多少條數據就有多少次磁盤操作。明白了這個,解決方案就有了,在批量插入數據的時候,只開啟一個事務,這樣只會進行一次磁盤操作,代碼如下:
db.beginTransaction(); try { for (...) { db.execSQL("...", new Object[]{}); } db.setTransactionSuccessful(); } catch (Exception e) { } finally { db.endTransaction(); } |
使用事務后性能有明顯的提升,以批量操作100條為例,由原來的5s優化成了現在的1s
posted on 2014-03-21 12:57 順其自然EVO 閱讀(319) 評論(0) 編輯 收藏 所屬分類: android