【发布时间】:2013-02-26 23:53:43
【问题描述】:
两个数据库应用程序,一个 HTML5 WebSql 和一个使用 ADT 构建的 Android。两者都使用完全相同的 Sqlite 数据库,因此具有相同的架构、表和索引。
SELECT
road.description,
xy.lat AS lat,
xy.lon AS lon,
road.id_road AS id_road
FROM xy
INNER JOIN road
ON xy.id_road = road.ID_ROAD
WHERE xy.lat BETWEEN -36.89804010977648
AND -36.878040110223516
AND xy.lon BETWEEN 174.78966425022352
AND 174.8096642497765
Web 应用程序使用 db.transaction。 Android SQL 在一个类中运行,该类使用在异步进程中创建的数据库对象扩展 SQLiteOpenHelper。
SQLiteDatabase dbr = this.getReadableDatabase();
Cursor cursor = dbr.rawQuery(sql, null);
if( cursor.moveToFirst()){
// loop through and analyse approx 400 results
}
在 HTC-1V 硬件上测试 HTML5 在 250 毫秒内运行上述查询,在 Android 应用程序上仅需要 4000 毫秒才能打开光标。是否可以从 Android 应用获得 WebSql 性能?
【问题讨论】:
-
你用什么做基准测试? 4000 毫秒只是为了获得一个可读的数据库,运行一个小查询并获得一个游标是有点荒谬的。我从来没有经历过。在包含几千条记录的数据集上,我从未见过应用出现明显的减速。
-
@jlindenbaum,嗨,这是一个 35mb 的数据库,xy 表有 264k 行。对于基准测试,我们比较了开始和结束 Date.getTime()。还循环运行查询并计算平均时间。
-
你是在模拟器还是真机上运行?
-
@Stéphane 它在最近的智能手机 HTC 1V 硬件上