我有一个查询在姜饼设备和Jellybean上运行得非常好,但在棒棒糖设备上运行速度较慢。我确定查询是正确的,并且写得很好,因为它在旧设备上运行良好。SQLite查询在Android棒棒糖上运行速度较慢
Cursor c;
String query = QUERY STRING;
c = db.rawQuery(query,new String[]{Integer.toString(a),Integer.toString(b)});
Log.e("SQL_QUERY_PROGRESS","1");
while(c.moveToNext()){
Log.e("SQL_QUERY_PROGRESS","2");
// Do stuff with data
}
c.close();
在姜饼设备,只有0.008的第二两个日志消息之间的,而在棒棒糖设备,它正在采取约8秒,这是非常慢的。
我无法理解的是,棒棒糖设备更新,并具有更多的RAM,CPU电源等,所以逻辑上确定新设备应该比旧设备更快地运行查询。
Lollipop上使用的Java版本可能存在错误,或者SQLite版本是否会导致速度大幅下降?
我用adb shell
并导航到数据库文件和运行使用的棒棒糖设备sqlite3
查询等,这让我觉得它更像是一个Java的问题不是SQLite的问题,它跑了几乎瞬间。
我完全不知道什么可能导致延迟,所以任何帮助或想法将不胜感激,所以我可以进一步调查!
棒棒堂设备通常有'userdata'分区加密 - 这会减慢许多与存储相关的操作,包括数据库访问。除此之外,新设备并不总是转化为更快的存储。游戏中有许多因素。所以,除非你想在同一个设备上的同一个数据集上运行不同的Android版本,并提供更多的信息 - 你的问题是模拟和脱离主题 – 2015-04-01 23:33:06
你在主线程中运行查询还是运行在单独的线程(AsyncTask,Thread,IntentService ...)? – ucsunil 2015-04-01 23:33:33
@AlexP。我用棒棒糖上的Nexus 5和Galaxy S4,姜饼上的Vodafone Smart II和Jellybean上的Galaxy S2上运行它,所以如果理论上速度不快,速度至少要低1000倍,那么这些设备的速度至少应该快一些! – PriestVallon 2015-04-01 23:37:04