2013-02-09 48 views
0

我想记录我的Java程序所用的时间。大多数论坛建议是这样:录制节目的CPU时间

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

这种方法的问题是,如果有运行多个程序,然后结束时间和开始时间之间的区别是不是我的程序所花费的时间。这也是在安排CPU等不同程序时所花费的时间。但是,我只想记录我的程序所花费的时间。我如何得到这个时间?

+1

您需要一个分析器。看到这里:http://stackoverflow.com/questions/3571166/best-and-safest-java-profiler-for-production-use – 2013-02-09 14:12:45

回答

2

你可以在这个article找到答案。 来自文章引用:

Call ManagementFactory。 getThreadMXBean()获取一个ThreadMXBean, 描述当前的JVM线程。该bean的getCurrentThreadCpuTime()方法返回当前线程的CPU时间。 getCurrentThreadUserTime()方法返回线程的用户时间。这些报告时间在纳秒

如果你的应用是多线程的你需要记录每个应用程序线程的CPU时间,总结起来得到通过跨所有应用程序所占用的总CPU时间它的线程。

话虽如此 - 如果你真的认真分析你的CPU消耗,你应该使用一个分析器。你可以从一个免费的开源软件开始,比如visualvm(也包括了jdk),它将会很容易地回答这个确切的问题。