6种快速统计代码执行时间的方法,真香!(6)

2023-05-02 来源:飞速影视
从上述 start() 和 stop() 的源码中可以看出,Spring 实现时间统计的本质还是使用了 Java 的内置方法 System.nanoTime() 来实现的。
2.Google Stopwatch 原理分析
Google Stopwatch 实现的核心源码如下:
public final class Stopwatch { private final Ticker ticker; private boolean isRunning; private long elapsedNanos; private long startTick; @CanIgnoreReturnValue public Stopwatch start() { Preconditions.checkState(!this.isRunning, "This stopwatch is already running."); this.isRunning = true; this.startTick = this.ticker.read(); return this; } @CanIgnoreReturnValue public Stopwatch stop() { long tick = this.ticker.read(); Preconditions.checkState(this.isRunning, "This stopwatch is already stopped."); this.isRunning = false; this.elapsedNanos = tick - this.startTick; return this; } // 忽略其他源码... }
从上述源码中可以看出 Stopwatch 对象中调用了 ticker 类来实现时间统计的,那接下来我们进入 ticker 类的实现源码:
public abstract class Ticker { private static final Ticker SYSTEM_TICKER = new Ticker() { public long read() { return Platform.systemNanoTime(); } }; protected Ticker() { } public abstract long read(); public static Ticker systemTicker() { return SYSTEM_TICKER; } } final class Platform { private static final Logger logger = Logger.getLogger(Platform.class.getName()); private static final PatternCompiler patternCompiler = loadPatternCompiler(); private Platform() { } static long systemNanoTime() { return System.nanoTime(); } // 忽略其他源码... }
相关影视
合作伙伴
本站仅为学习交流之用,所有视频和图片均来自互联网收集而来,版权归原创者所有,本网站只提供web页面服务,并不提供资源存储,也不参与录制、上传
若本站收录的节目无意侵犯了贵司版权,请发邮件(我们会在3个工作日内删除侵权内容,谢谢。)

www.fs94.org-飞速影视 粤ICP备74369512号