如何计算我的程序的运行时间?
可能重复:
如何在Java中计算方法的执行时间?
我写了一个程序,现在我想计算我的程序从开始到结束的总运行时间。
我怎样才能做到这一点?
使用currentTimeMillis()获取当前时间。
long startTime = System.currentTimeMillis(); .....your program.... long endTime = System.currentTimeMillis(); long totalTime = endTime - startTime; System.out.println(totalTime);
这里有一个简短的教程,以防您需要比这更先进的东西: http : //java.sun.com/docs/books/performance/1st_edition/html/JPMeasurement.fm.html
在主要方法的开始处,添加下面这行代码:
final long startTime = System.nanoTime();
然后,在主要方法的最后一行,可以添加:
final long duration = System.nanoTime() - startTime;
duration
现在包含程序运行的时间(以纳秒为单位)。 你可以像这样打印这个值:
System.out.println(duration);
如果要以秒为单位显示持续时间,则必须将该值除以1'000'000'000。 或者如果你想要一个Date
对象: Date myTime = new Date(duration / 1000);
然后您可以访问Date
的各种方法打印分钟数,小时数等
使用系统。 currentTimeMillis ()或System。 nanoTime ()如果你想更精确的阅读。 通常,如果需要将值输出给用户,毫秒就足够精确。 此外, System.nanoTime()
可能会返回负值,因此如果使用该方法,返回值可能不正确。
一般而广泛的使用将是使用毫秒:
long start = System.currentTimeMillis(); ... long end = System.currentTimeMillis(); NumberFormat formatter = new DecimalFormat("#0.00000"); System.out.print("Execution time is " + formatter.format((end - start) / 1000d) + " seconds");
请注意,通常使用纳秒来计算非常短而精确的程序执行,如unit testing和基准testing。 因此,对于整体程序执行,毫秒是优选的。
一般的做法是:
- 在
main()
的开始处说明你的基准testing的开始时间。 - 运行你的代码。
- 在
main()
的末尾说出你的基准testing结束的时间。 - 从结束时间减去开始时间,并转换成适当的单位。
一个提示,看看System.getCurrentTimeMillis()
或System.nanoTime()
。
您需要获取应用程序启动时的时间,并将其与应用程序结束的时间进行比较。
温应用程序启动:
Calendar calendar = Calendar.getInstance(); // Get start time (this needs to be a global variable). Date startDate = calendar.getTime();
当应用程序结束
Calendar calendar = Calendar.getInstance(); // Get start time (this needs to be a global variable). Date endDate = calendar.getTime();
要获得差异(以毫秒为单位),请执行以下操作:
long sumDate = endDate.getTime() - startDate.getTime();
除了众所周知的(并且已经提到的) System.currentTimeMillis()
和System.nanoTime()
,还有一个叫做perf4j的整洁的库,这当然也是有用的,这当然也取决于你的目的。