我正在尝试优化我的Sqlite查询的性能。
我想知道是否有办法找到每个Sqlite语句的执行时间,或者是否有任何工具允许在Android SDK中查看语句执行时间?
虽然我熟悉查询计时器的.timer On
和.timer show
命令。
示例:
真的很感激任何答案!
答案 0 :(得分:6)
你可以用Java做到这一点:
int startTime = System.currentTimeMillis();
... // Execute the query here
int executionTime = System.currentTimeMillis() - startTime; // This variable now contains the time taken by the query, in milliseconds
答案 1 :(得分:3)
不要自己计算执行时间,让sqlite为你做这件事 来自here:
/**
* Controls the printing of wall-clock time taken to execute SQL statements
* as they are executed.
*
* Enable using "adb shell setprop log.tag.SQLiteTime VERBOSE".
*/
public static final boolean DEBUG_SQL_TIME =
Log.isLoggable("SQLiteTime", Log.VERBOSE);
因此,要启用执行时间跟踪运行:
adb shell setprop log.tag.SQLiteTime VERBOSE
您必须重新启动应用程序才能重新加载新设置**。之后,您将开始在logcat中看到这些日志记录:
02-14 12:27:00.457 11936-12137 / osom.info.dbtest I / Database: elapsedTime4Sql | /data/data/osom.info.dbtest/databases/test.db | 1.000 ms | UPDATE TestTable SET键=? WHERE _id = 1
**有时这不够,所以请运行adb shell stop
和adb shell start
。
要停止打印这些日志,请重新启动设备(重新启动之间不会保留此属性)或将属性设置为更高的日志级别,即:
adb shell setprop log.tag.SQLiteTime ERROR
答案 2 :(得分:1)
您可以使用
System.currentTimeMillis();
在您的代码中了解运行查询所花费的时间......
t1=System.currentTimeMillis();
//Execute query
t2=System.currentTimeMillis();
然后(t1-t2)会给你时差。 一旦我做了Android基准测试应用程序使用此方法来计算不同的智能手机执行基于SQL查询执行。 希望它有所帮助。