【发布时间】:2011-02-25 09:25:37
【问题描述】:
我正在使用 ASM java 字节码检测,我的目标是测量每次访问变量的时间。
** 测量时间并记录 **
** 变量访问 **
我正在寻找微秒级的分辨率。它应该是准确的,因此足够“便宜”(这意味着我不想要一个需要 10 毫秒才能获得时间的函数或库)。
我已经尝试过System.NanoTime()(太多,而且成本高昂)和Calendar(太松散),但我正在寻找更好的选择。
【问题讨论】:
-
System.nanoTime() 通常需要大约 0.2 微秒,但我看到它最多需要 1.0 微秒。注意:您可能需要调用它两次。
-
访问一个变量通常需要 1 到 30 纳秒,具体取决于它是否在缓存中。用 nanoTime 来衡量它是非常困难的,因为它是如此之短。您确定需要测量亚微秒级事件吗?
-
@Peter Lawrey - 为什么我可能会调用它两次?好吧,我用 System.NanoTime() 做了很多模拟,不幸的是每次访问之间有超过 10^3 的时间差异......这让我相信微秒就足够了
-
为什么不只计算访问次数并假设所用时间大致相同。 (实际上,对于最频繁访问的数据来说,平均而言它会更短(总共更长),因为这是缓存的设计目的)
-
计算访问次数不应依赖于机器。 AFAIK 大多数分析器都在某处使用这种方法。
标签: java time-measurement