2015-10-23 52 views
1

我想測試我的代碼執行速度, 我的代碼:如何在android中測試代碼的執行速度?

public static String foo() { 

     final long startTime = System.currentTimeMillis(); 
     try { 
      // my code here 
      long final endtime = System.currentTimeMillis(); 
      System.out.println ("Total execution time:" + (endtime - startTime)); 
      return msg; 
     } Catch (GeneralSecurityException e) { 
      return "ERROR"; 
     } 
    } 

但執行該代碼多次(重複試驗),我發現同樣的代碼執行總額之間的差額後。我認爲這是因爲系統加載了後臺進程。有一個更好的方法嗎?

+0

代碼運行需要多長時間?如果它快速完成(少於一秒),您需要多次運行併除以運行次數。另外,因爲前者使用單調時鐘,所以比'System.currentTimeMillis()'更喜歡'System.nanoTime()'。 – fadden

+0

@fadden是它在1秒內運行,所以沒有辦法得到真正的代碼執行時間沒有系統加載過程影響它?此外,謝謝你nanopime建議:) –

+0

它可能沒有任何關係的後臺進程。移動設備在閒置時以低功耗運行,並且在有一定時間負載之前不要將時鐘加速。如果你的代碼完全在上升階段運行,它不會像CPU全速運行那樣快。另一方面,由於熱節流,時鐘可能會變慢。如果你在AsyncTask中運行,線程本身的優先級較低。標杆管理很難。 :-)找到一種方法來執行相同的代碼100x,然後將時間除以100。 – fadden

回答