Android数据库接口性能分析

来源:互联网 发布:tensorflow 集群搭建 编辑:程序博客网 时间:2024/05/22 01:52

数据库表中有105记录,20个字段,都是文本和数值字段

 

DatabaseHelper.getReadableDatabase  首次调用耗时15~46ms,其后调用为0

 

SQLiteDatabase.Query  耗时基本在1~2ms

 

SQCursor.getCount  耗时 9~26ms

 

SQCursor.getColumnIndex 耗时0ms

 

SQCursor.close  耗时0ms

 

getReadableDatabase首次调用时,会生成SQLiteDatabase对象,该对象构建时去打开数据库文件,所以这个操作比较耗时。

 

SQCursor.getCount调用时,回去执行fillWindow,将查询的数据从文件系统缓存到内存中,因此这个操作也比较耗时。与getReadableDatabase打开表操作类似,耗费时间都与数据库中记录数成正比。

 

SQLiteDatabase.Query需要1~2ms,Query 返回新产生的SQLiteCursor对象。这个过程中要创建SQLiteDirectCursorDriver、SQLiteQuery、SQLiteCursor对象,并且在SQLiteCursor构造函数中会将查询涉及到的字段名缓存起来。如果比较看重时间耗费的话,可以尽量复用已有的Cursor对象。

 

SQCursor.getColumnIndex 与SQCursor.close 耗费很少,因为基本上都是对缓存数据的操作。