【发布时间】:2017-03-01 18:59:55
【问题描述】:
我想计算我的 Java 程序的运行时间。当我使用以下方法时:
long startTime = System.currentTimeMillis();
...my program...
long endTime = System.currentTimeMillis();
long totalTime = endTime - startTime;
System.out.println(totalTime);
结果有时会有所不同,所以我想获取一些(100 个或一些..)样本并计算平均值以使其更准确:
long total = 0
for (int i = 0; i < 100; i++) {
Long s = System.currentTimeMillis();
...my program...
Long e = System.currentTimeMillis();
total += (e - s);
}
所以我得到了总运行时间。对于第一种方法,通常约为 600 毫秒,而对于第二种方法,结果约为 30000 毫秒(因此平均时间:30000/100 = 300 毫秒)。
我认为这可能与JVM有关,它需要一些时间来加载文件或将其转换为字节码。而第二种方法只加载和转换一次,只运行该方法 100 次?
我不确定我的解释,如果我错了,请纠正我。
而我的问题是:如果我想得到“真实”的总运行时间并计算平均值,我该怎么办?
提前致谢!
【问题讨论】: