0

在对 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和“正则表达式”指的是 Java 正则表达式库。

4

2 回答 2

2

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

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

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

Just In Time Compiler:当 JVM 识别出代码的热点部分时

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

一本好书

于 2013-05-24T01:43:03.727 回答
1

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

于 2013-05-24T00:45:03.263 回答