Spring boot
项目,记录保存2个DB所需的时间,
long start = System.currentTimeMillis();
getDao().batchInsert(batchList);
long end = System.currentTimeMillis();
log.info("Save {} data 2 DB successfully took time: {}", getDescName(), (end - start));
很奇怪,我发现时间成本为负,见下文
2019-05-16 14:41:04.420 INFO 3324 --- [ave2db-thread-2] c.c.sz_vss.demo.AbstractSave2DBProcess : Save Stock data 2 DB batch size: 416
2019-05-16 14:41:03.152 INFO 3324 --- [ave2db-thread-2] c.c.sz_vss.demo.AbstractSave2DBProcess : Save Stock data 2 DB successfully took time: -1268
为什么会这样?它是Spring Boot日志系统错误吗?还是Windows系统时间可能偶尔撤退?
答案 0 :(得分:0)
网络时间同步可以在任一方向上进行校正,因此,系统日历可以向后移动。此外,在观察夏令时的时区中,您每年还会看到+/- 1小时的中断。
这就是为什么不建议使用系统日历来测量经过时间的原因。有单调计时器(在Windows上,QueryPerformanceCounter()
与QueryPerformanceFrequency()
组合,在POSIX(如Linux)上是clock_gettime(CLOCK_MONOTONIC)
)。托管框架通常将它们包装在名为“ Stopwatch”的对象中。