定时行动

时间:2011-05-28 19:53:41

标签: java benchmarking

我正在使用一些操作解析文件,我想测量执行这些操作所需的时间。

最好的方法是打印时间?

5 个答案:

答案 0 :(得分:5)

更新:如果您不反对使用外部库而且您使用的是JDK 5+,则Google Guava的Stopwatch使用System.nanoTime()。它与绝对系统或挂钟时间无关,而只在计算经过时间时才有用,但这正是您想要的。

否则,您可以使用System.currentTimeMillis()作为长整数返回当前系统时间(以毫秒为单位)。

long start = System.currentTimeMillis();
// ... perform operations ...
long time = System.currentTimeMillis() - start;
System.out.println("Operation took " + time + "ms");

定时短期操作可能非常棘手,尤其是当您在循环中运行它们以在多次运行中分摊它时。您正处于操作系统任务调度程序和Java内部线程调度程序的一时兴起。

要缓解这些问题,请平均多次运行的时间,并尽可能将控制台输出操作移出计时。请记住,你不会得到确切的数字。

答案 1 :(得分:1)

这是您通常测量执行时间的方式:

long start = System.currentTimeMillis();
//perform action
System.out.println("It took " + (System.currentTimeMillis() - start) + "ms");

答案 2 :(得分:1)

long start=System.currentTimeMillis();
//your action code
long end=System.currentTimeMillis();

int durationInMillis=end-start;

答案 3 :(得分:1)

不确定您的操作是什么意思,但如果您想查看一段代码需要多长时间:

long start = System.nanoTime();
//Your code here
long timeElapsed = System.nanoTime() - start;
System.out.println(timeElapsed);

这将打印纳秒数

答案 4 :(得分:1)

我会使用我的IDE的探查器或jvisualvm