如何在android中找出Sqlite查询的执行时间

时间:2014-01-15 13:35:03

标签: android performance android-sqlite

我正在尝试优化我的Sqlite查询的性能。

我想知道是否有办法找到每个Sqlite语句的执行时间,或者是否有任何工具允许在Android SDK中查看语句执行时间?

虽然我熟悉查询计时器的.timer On.timer show命令。

示例:

Query Exceution time

真的很感激任何答案!

3 个答案:

答案 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 stopadb 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查询执行。    希望它有所帮助。