我想计算时间瞬间之间的时差。例如,在程序执行期间,我设置变量的值,一段时间后我再次更改它。最近的价值变化与之前价值之间的时差是多少?
答案 0 :(得分:10)
您可以使用System.currentTimeMillis()
以1毫秒的分辨率保存当前时间。
只需在第一个事件发生时保存时间(最好使用long var来保存该值)
第二次事件发生时差值除以1000将给出时间差(秒)。
答案 1 :(得分:3)
你可以做一些简单的事情:
long begin = System.currentTimeMillis();
doWork();
long end = System.currentTimeMillis();
long dt = end - begin;
更成熟的方式(特别是,如果你需要在很多地方做很多次)是使用库。看看perf4j。您可以在方法上添加@Profiled
注释,它会自动生成一些统计信息并将其写入日志文件。
答案 2 :(得分:2)
当您需要从System.nanoTime()
检索时,存储当前时间,并减去这些值中的任意两个以获得纳秒的差异。
(首先按整数除以百万,然后浮动一千,你得到一个时间,在几秒钟内有三个小数位,打印得很好。)
答案 3 :(得分:1)
只需从系统中获取并存储在长数据中。你可以对那些多头做数学计算,以找出时差。
long start = System.currentTimeMillis();
//do stuff
//do more stuff
long end = System.currentTimeMillis();