如何在Clojure中最快读取系统时钟?获取UTC纳秒级时间戳
获取UTC纳秒级时间戳的Clojure实现
要获取自1970年1月1日UTC以来的纳秒级整数时间戳,同时规避创建Java Date对象的开销,你可以直接基于Java的底层工具类或系统方法实现,完全不需要多余的日期格式转换:
纳秒精度实现(长整型)
如果需要完整的纳秒精度,可通过Instant提取秒数和当前秒内的纳秒数组合计算,开销极小且不会生成冗余的日期对象:
(let [instant (java.time.Instant/now)] (+ (* (.getEpochSecond instant) 1000000000) (.getNano instant)))
毫秒精度实现(更轻量化)
如果业务允许毫秒精度,直接调用系统底层的毫秒时间戳方法是最优选择,完全无对象封装开销:
(System/currentTimeMillis)
注:
System/nanoTime是JVM启动后的相对时间,并非自1970年以来的绝对时间,不符合需求,请勿使用。
内容的提问来源于stack exchange,提问作者LionelGoulet
相关产品推荐
相关产品推荐

