Android:時間測定
最終更新日01 Apr 2014 07:33
関数名 | 単位 | 備考 |
---|---|---|
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
ていうのがあるらしい。
time