如何衡量java进程的实际运行时间?

时间:2016-08-29 21:07:36

标签: java time process

我编写了一个java程序,可以编译,执行其他提交的代码(cpp,java)。我正在使用java的进程类。流程类调用g++java compiler。出于某种目的,我需要知道该进程的实际执行时间或代码执行的时间。

process.waitFor(2000, TimeUnit.MILLISECONDS)

此过程正在等待2000毫秒但如果过程在不到2000毫秒内完成,我怎么知道该过程需要多长时间?

======更新===== 我目前这样做是一种古老的方式。

StopWatch.Start();
process.waitFor(dto.getTimeLimit(), TimeUnit.MILLISECONDS)
long timeEplased = StopWatch.Stop();

StopWatch是我写的课程,用System.nanoTime()计算经过的时间。

1 个答案:

答案 0 :(得分:0)

这样做就足够了:

    long before = System.nanoTime();

    process.waitFor();

    long durationMs = (System.nanoTime() - before)/1_000_000;

如果您的线程没有中断并且任务停止。您可以在新线程中启动它,并在超出时间限制时中断它。

不幸的是,我认为没有专门用于该任务的专用接口 - 可能是因为进程运行时的概念可能在不同的操作系统之间(您对处理器时间,用户空间时间,内核空间时间感兴趣) ,单调的时钟时间?这些都必须处理,这只是一个generix * NIX)