【发布时间】:2010-12-25 23:51:52
【问题描述】:
我想计算两个时间点之间的时间差(以秒为单位)。例如,在程序执行期间,我设置了一个变量的值,一段时间后我再次更改它。最近的值变化与之前的值之间的时间差是多少?
【问题讨论】:
我想计算两个时间点之间的时间差(以秒为单位)。例如,在程序执行期间,我设置了一个变量的值,一段时间后我再次更改它。最近的值变化与之前的值之间的时间差是多少?
【问题讨论】:
您可以使用System.currentTimeMillis() 以一毫秒的分辨率保存当前时间。
只需在第一个事件发生时节省时间(最好使用长变量来保存该值)
当第二个事件发生时再次发生。差除以 1000 将得出以秒为单位的时差。
【讨论】:
你可以做这样简单的事情:
long begin = System.currentTimeMillis();
doWork();
long end = System.currentTimeMillis();
long dt = end - begin;
更成熟的方式(特别是,如果您需要在很多地方多次执行此操作)是使用库。看perf4j。您可以在方法上添加@Profiled 注解,它会自动生成一些统计信息并将其写入日志文件。
【讨论】:
存储从System.nanoTime() 检索到的当前时间,并减去这些值中的任意两个以获得以纳秒为单位的差异。
(通过整数除以一百万,然后浮点数一千,您会得到一个以秒为单位的时间,小数点后三位,打印效果很好。)
【讨论】:
只需从系统中获取它并存储在长数据中。您可以对这些 long 进行数学运算以计算出时差。
long start = System.currentTimeMillis();
//do stuff
//do more stuff
long end = System.currentTimeMillis();
【讨论】: