- Notifications
You must be signed in to change notification settings - Fork 163
Open
Description
Here is my benchmark:
import org.apache.commons.lang3.RandomStringUtils; import org.openjdk.jmh.annotations.Benchmark; import org.openjdk.jmh.annotations.BenchmarkMode; import org.openjdk.jmh.annotations.Fork; import org.openjdk.jmh.annotations.Measurement; import org.openjdk.jmh.annotations.Mode; import org.openjdk.jmh.annotations.OutputTimeUnit; import org.openjdk.jmh.annotations.Scope; import org.openjdk.jmh.annotations.Setup; import org.openjdk.jmh.annotations.State; import org.openjdk.jmh.annotations.Threads; import org.openjdk.jmh.annotations.Warmup; import java.util.Iterator; import java.util.List; import java.util.concurrent.TimeUnit; import java.util.regex.Pattern; import java.util.stream.Collectors; import java.util.stream.IntStream; @Warmup(iterations = 2, time = 3) @Measurement(iterations = 2, time = 3) @State(Scope.Thread) @BenchmarkMode(Mode.AverageTime) @OutputTimeUnit(TimeUnit.NANOSECONDS) @Threads(3) @Fork(1) /* * <pre> * Benchmark Mode Cnt Score Error Units * Re2jBenchmark.javaMatch avgt 2 175.926 ns/op * Re2jBenchmark.re2jMatch avgt 2 1067.591 ns/op * <pre/> */ public class Re2jBenchmark { private static final String PATTERN = "[0-5][0-6]{1,3}[1-7]{1,2}[2580]{1,3}[127]{0,8}"; private static final Pattern p1 = Pattern.compile(PATTERN); private static final com.google.re2j.Pattern p2 = com.google.re2j.Pattern.compile(PATTERN); private List<String> inputs; private Iterator<String> iterator; @Setup public void setup() { inputs = IntStream.rangeClosed(0, 999) .mapToObj(n -> RandomStringUtils.randomNumeric(32)) .collect(Collectors.toList()); iterator = inputs.listIterator(); } private String nextInput() { if (!iterator.hasNext()) { iterator = inputs.listIterator(); } return iterator.next(); } @Benchmark public boolean javaMatch() { return p1.matcher(nextInput()).find(); } @Benchmark public boolean re2jMatch() { return p2.matcher(nextInput()).find(); } }here is the result:
Benchmark Mode Cnt Score Error Units Re2jBenchmark.javaMatch avgt 2 175.926 ns/op Re2jBenchmark.re2jMatch avgt 2 1067.591 ns/op Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels