0

我想记录我的 Java 程序所用的时间。大多数论坛建议如下:

int starttime=System.nanoTime();  
//program code  
int endTime=System.nanoTime();  
int timetaken=starttime-endTime;  

这种方法的问题在于,如果有多个程序在运行,那么 endTime 和 starttime 之间的差异就不是我的程序所花费的时间。这也是在CPU等中调度不同程序所花费的时间。但是,我只想记录我的程序所花费的时间。我如何获得这个时间?

4

1 回答 1

2

你可以在这篇文章中找到答案。引用文章:

调用 ManagementFactory 。getThreadMXBean() 获取描述当前 JVM 线程的 ThreadMXBean。bean 的 getCurrentThreadCpuTime() 方法返回当前线程的 CPU 时间。getCurrentThreadUserTime() 方法返回线程的用户时间。这两个报告时间都以纳秒为单位

如果您的应用程序是多线程的,您需要记录每个应用程序线程的 cpu 时间并将它们相加,以获得您的应用程序在其所有线程中占用的总 cpu 时间。

话虽如此 - 如果你真的很想分析你的 CPU 消耗,你可能应该使用分析器。您可以从一个免费的开源软件开始,例如visualvm(也与 jdk 捆绑在一起),它将(在许多其他方面)非常容易地回答这个确切的问题。

于 2013-02-09T14:11:14.027 回答