在Android開發當中,往往需要對一些代碼進行性能的測試,通過計算代碼的執行時間差往往是首選的方法,通常我們會選擇System.currentTimeMillis()方法,然後與協調世界時間進行對比,得出執行的時間。但是今天,小編將介紹另外一種方法System.nanoTime(),可以精確測試代碼的執行時間。
一、System.nanoTime()簡介
此方法返回最精確的可用系統計時器的當前值,以毫秒爲單位,只限用於測量已過的時間,與系統或鐘錶時間的其他任何時間無任何關係。返回值表示從某一固定但任意的時間算起的毫微秒數(或許從以後算起,所以該值可能爲負)。此方法提供毫微秒的精度,但不是必要的毫微秒的準確度。它對於值的更改頻率沒有作出保證。在取值範圍大於約 292 年(263 毫微秒)的連續調用的不同點在於:由於數字溢出,將無法準確計算已過的時間。
二、使用方法
1.計算開始時間
long startTime = System.nanoTime();
2.計算執行時間
long consumingTime = System.nanoTime() - startTime;
三、System.currentTimeMillis()與System.nanoTime()區別
System.currentTimeMillis()單位是毫秒(ms),而System.nanoTime()是納秒(ns),計算更爲精確。System.nanoTime()返回的可以是任意時間,甚至可以爲負數,但是System.currentTimeMillis()的本質是相當於Date,用於計算相對於1970年1月1日之間的毫秒差。
Good luck!
Write by Jimmy.li