javaで時間計測する方法 -ラップタイムを計測するクラス
Javaの学習。
時間計測にはSystem.currentTimeMillisを使う。
コード中の2点を通るまでの時間はそれぞれでSystem.currentTimeMillisでlong型の値を取得してその差分をとるとミリ秒単位での時間になる。そこでラップタイムをとるクラスを作ってみた。
public class Timer { private int nrotate; private int index; private long startat; private long[] laps; Timer(int n) { nrotate = 10; index = 0; laps = new long[nrotate]; } void start() { startat = System.currentTimeMillis(); } void lap() { long e = System.currentTimeMillis(); laps[index] = e; index = (index + 1) % nrotate; } void print() { // startからの経過時間、直前のラップとの差分を表示する for (int i = 0; i < laps.length; i++) { long lap = laps[(index + i) % nrotate] - startat; long bet = laps[(index + i) % nrotate] - (laps[(index + i - (i == 0 ? 0 : 1) + nrotate) % nrotate]); System.out.println((i + 1) + ":" + lap + ", " + bet); } } }
使ってみた
public class TakeLapTime { public static void main(String[] args) { Timer timer = new Timer(10); timer.start(); for (int i = 0; i < 10; i++) { ComputeIntensive.intensive(); timer.lap(); } timer.print(); } } class ComputeIntensive { static long intensive() { long n = 10000000; long sum = 0; for (int i = 1; i <= n; i++) sum += i; return sum; } }
出力結果
1:156, 0 2:313, 157 3:391, 78 4:484, 93 5:578, 94 6:656, 78 7:734, 78 8:828, 94 9:906, 78 10:1000, 94