在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正则表达式库。
答案 0 :(得分:2)
这是由于Java的标准微基准问题。
JVM预热:由于有几个参数,代码首先经常变慢,并且在执行时间增长时变得越来越快,直到它进入稳定状态。
类加载:第一次启动基准测试时,必须加载所有使用的类,从而增加执行时间。
及时编译器:当JVM识别代码的热门部分时
垃圾收集器:在基准测试期间可能会发生垃圾收集,因此时间会增加很多。
一个好read。
答案 1 :(得分:1)
一开始,编译正则表达式。所以第一次运行使用额外的时间。此外,可能还会进行运行时优化。