【问题标题】:Performance bottleneck in concurrent calls to System.currentTimeInMillis()并发调用 System.currentTimeMillis() 的性能瓶颈
【发布时间】:2010-03-28 02:59:44
【问题描述】:

我怀疑来自不同线程 (>15) 的调用会对性能产生负面影响。有没有更好的方法来获取并发应用程序的系统时间?

【问题讨论】:

  • 我不这么认为,大多数操作系统都对这种功能提供了很好的支持,并且它可能被实现为原生方法。您为什么将性能问题归咎于这种方法?
  • 你做了哪些分析表明这个函数是问题所在?

标签: java concurrency clojure


【解决方案1】:

如果确实有问题,您可以让后台线程将当前时间存储在volatile 中。或者只是不那么频繁地调用它。

【讨论】:

  • +1 - 必须频繁调用System.currentTimeMillis 的应用程序肯定有点奇怪。
【解决方案2】:

一点小提示:

我从谷歌工程师和其他程序员那里了解到,使用 System.nanotime 会更好。例如joshua bloch

对于间隔计时,始终优先使用 System.nanoTime System.currentTimeMillis

【讨论】:

  • 不回答问题。此外,即使根据您的报价, System.nanoTime 也是间隔时间的首选,没有提及 OP 使用系统时间的目的。间隔时间在这里可能不适用。
  • 也许它没有直接回答这个问题,但我认为其他人已经回答了这个问题,所以我只提供我读过的一个提示。
  • techper.net/2008/08/10/…timeinMillis MS windows 的粒度有问题
  • 感谢链接基因 T :)。知道我们更清楚为什么 currentMillis 可能是个问题。
猜你喜欢
  • 2010-11-22
  • 1970-01-01
  • 1970-01-01
  • 2015-07-27
  • 1970-01-01
  • 2015-06-12
  • 2016-06-12
  • 1970-01-01
  • 2018-07-20
相关资源
最近更新 更多