【问题标题】:java benchmarking : More time for lesser inputjava基准测试:更少输入的更多时间
【发布时间】:2013-05-24 00:43:04
【问题描述】:

在对 2 个正则表达式库实现进行一些基准测试后,我们得到了以下结果:

inputs   automaton      regex
 50      343ms          210ms
100      48ms           187ms
200      65ms           363ms
400      100ms          692ms
800      165ms         1385ms

为什么第一次运行(有 50 个输入)对于两种实现来说都非常昂贵?

仅供参考:automation 指的是http://www.brics.dk/automaton 和 'regex' 指的是 java regex 库。

【问题讨论】:

  • 是否报告了单次运行的时间?或者它们是多次运行的平均值。我认为要获得更可靠的结果,最好报告多次运行的平均时间(比如 100 次运行)。
  • @SinaIravanian 这些不是平均时间,但对于多次运行,我可以看到附近的值

标签: java regex performance nutch


【解决方案1】:

这是由于 Java 的标准微基准问题造成的。

JVM 预热:由于有几个参数,代码首先通常很慢,然后随着执行时间的增长变得越来越快,直到进入稳定状态。

类加载:首次启动基准测试时,必须加载所有使用的类,从而增加执行时间。

即时编译器:当 JVM 识别代码的热点部分时

垃圾收集器:在基准测试期间可能会发生垃圾收集,因此时间会增加很多。

一个好read

【讨论】:

    【解决方案2】:

    一开始,正则表达式被编译。所以第一次运行需要额外的时间。此外,可能正在进行运行时优化。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-09
      • 1970-01-01
      • 2019-10-08
      • 1970-01-01
      • 2011-02-20
      • 1970-01-01
      • 2010-09-20
      • 1970-01-01
      相关资源
      最近更新 更多