Android:時間測定

android-time.png
関数名 単位 備考
System.currentTimeMillis() ミリ秒 あまりおすすめじゃない
System.nanoTime() おすすめ
Debug.threadCpuTimeNanos()
SystemClock.currentThreadTimeMills()
SystemClock.elapsedRealtime()
SystemClock.uptimeMills()

System.currentTimeMillis()がおすすめじゃない理由は2つある。

  • 精度と正確さが十分でないことがある
  • システム時間を変更すると結果に影響をおよぼすことがある
private void measureNanoTime(){
    final int ITERATIONSn = 1000000;
     long total=0;
     long min=Long.MAX_VALUE;
     long max=Long.MIN_VALUE;
     for(int i=0;i<ITERATIONS;i++){
        long time=System.nanoTime();
        time=System.nanoTime()-time;
        total+=time;
        if(time<min){
             min=time;
         }
       if(time>max){
        max=time;
       }
}
System.out.println("System.nanoTime() takes about "+ ((float)total/ITERATIONS)+"nanoseconds to complete");
System.out.println("Minimum:"+min);
System.out.println("Maximum:"+max);
}

時間を様々な単位に変換する TimeUnit

ていうのがあるらしい。

Bibliography

time

サポートサイト Wikidot.com time