我花了很长时间查看我们设备上的一些性能问题,并注意到我们有很多应用程序都在执行数据库读/写..
我首先使用 Contacts API 插入新的联系人和数据行,但速度非常慢。1 分 18 秒插入大约 1500 行(250 个原始联系人和 1250 个数据行)..
我曾在另一个应用程序中使用插入助手进行性能插入,并决定编写一个测试应用程序,该应用程序将写入单独的数据库和单独的插入方法。
每个数据库都有一个表,每个表有 4 列:_ID、名称、时间和 Blob(所有类型为“字符串”)——就像联系人提供者定义数据列一样。
_ID 是自动增量 pk,Name 只是插入相同的东西 '1234567890',time 是当前系统时间,单位是 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 字节/毫秒)
有任何想法吗?