2014-01-15 21 views
2

我正試圖優化我的Sqlite查詢的性能。如何找出Sqlite查詢的執行時間android

我想知道是否有任何方法可以找到每個Sqlite語句的執行時間,或者是否有任何工具可以查看Android SDK中的語句執行時間?

雖然我熟悉查詢計時器的.timer On.timer show命令。

例子:

Query Exceution time

任何答案是真正的讚賞!

+0

檢查此鏈接http://stackoverflow.com/questions/6948270 /確定執行時間查詢在sqlite我認爲它回答你的問題。 –

回答

5

你可以在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 
+0

@Nemmondommegav這就是我正在尋找的...... thks – nitesh

1

您可以使用

System.currentTimeMillis(); 

在你的代碼知道時間參加了在運行查詢...

t1=System.currentTimeMillis(); 
    //Execute query 
    t2=System.currentTimeMillis(); 

那麼(t1-t2)會給你時間差。 一旦我使android基準測試應用程序使用此方法來計算不同的智能手機基於sql查詢執行的執行情況。 希望它有助於。

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中看到這些日誌記錄:

12月2日至14日:27:00.457 11936-12137/osom.info.dbtest I /數據庫: elapsedTime4Sql | /數據/數據/ osom。 info.dbtest/databases/test.db | 1.000 ms | UPDATE TestTable SET key =? WHERE _id = 1

**有時候,這是不夠的,所以運行adb shell stopadb shell start

要停止打印這些日誌可以重新啓動設備(此屬性不會重新啓動之間持久化)或屬性設置爲一個更高的日誌級別,即:

adb shell setprop log.tag.SQLiteTime ERROR