定时行动

Dar*_*Ray 3 java benchmarking

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

什么是最好的方法来打印时间?

Dav*_*ess 5

更新:如果你不反对使用外部库和你的JDK 5+,谷歌番石榴有一个秒表使用System.nanoTime().它与绝对系统或挂钟时间无关,而只在计算经过时间时才有用,但这正是您想要的.

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

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

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

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