我需要解析一个相当大的 XML 文件(大约一百千字节到几百千字节),我正在使用Xml#parse(String, ContentHandler)
。我目前正在使用 152KB 文件对此进行测试。
在解析过程中,我还使用类似于以下的调用将数据插入 SQLite 数据库中:getWritableDatabase().insert(TABLE_NAME, "_id", values)
。对于 152KB 的测试文件(归结为插入大约 200 行),所有这些加在一起大约需要 80 秒。
当我注释掉所有插入语句(但保留其他所有内容,例如创建ContentValues
等)相同的文件只需要 23 秒。
数据库操作有这么大的开销正常吗?我能做点什么吗?
您应该进行批量插入。
伪代码:
db.beginTransaction();
for (entry : listOfEntries) {
db.insert(entry);
}
db.setTransactionSuccessful();
db.endTransaction();
这极大地提高了我的应用程序中的插入速度。
Update:
@Yuku 提供了一篇非常有趣的博文:Android 使用 inserthelper 更快地插入 sqlite 数据库 http://www.outofwhatbox.com/blog/2010/12/android-using-databaseutils-inserthelper-for-faster-insertions-into-sqlite-database/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)