Я потратил довольно много времени на некоторые проблемы с производительностью на нашем устройстве и заметил, что у нас есть довольно много приложений, которые делают db-чтение/запись.
Я начал с использования API контактов для вставки новых контактов и строк данных, и это было очень медленно. 1 минута 18 секунд, чтобы вставить около 1500 строк (250 необработанных контактов и 1250 строк данных).
Я использовал помощник вставки в другом приложении для вставки производительности и решил написать тестовое приложение, которое будет писать для разделения db w/отдельных методов вставки.
Каждый db имеет одну таблицу, каждый w/4 столбца: _ID, Name, Time и Blob (весь тип "строка" ) - точно так же, как поставщик контактов определяет столбцы данных.
_ID - auto increment pk, Name просто вставляет то же самое "1234567890", время - это только текущее системное время в milis, а BLOB - это строка длиной 6400, заполненная буквой "A"...
Сначала я проверил объемную вставку, но все, что она делает, - это петли через все введенные вами вставки и так же медленны, как и вставки отдельно (или незначительное влияние на производительность).
Я проверил 3 разных метода для вставки: ContentValues w/db.insert метод: SQLiteStatement w/statement.execute() (выполняется внутри транзакции). SqliteInsertHelper с транзакцией.
Я могу предоставить некоторый код, но я получил лучшую производительность из InsertHelper и задаюсь вопросом, почему он устарел:
Время для вставки 100 записей ContentValues: 7.778 секунд (82 байта написано/мс) SQLiteStatement: 1.311 секунд (489 байт в месяц/мс) SqliteInsertHElper: 0.292 секунды (2197 байт в сек./Мс)
Любые идеи?