4

To search for s in S (size(S) >= size(s) and return a true/false value), it's better for performance to use StringUtils.contains() of Apache or use Boyer-Moore algorithm implemented and tested well by someone I found?

Thanks

2 Answers 2

8

The last time I looked into the Java regex matching code while debugging, the Java 7 regex engine used the Boyer-Moore algorithm for sequences of literal text matches. So the easiest way to find a String using Boyer-Moore is to prepare using p=Pattern.compile(searchString, Pattern.LITERAL) and search using p.matcher(toSearchOn).find(). No third party libraries and no handcrafted work needed. And I believe the JRE classes are tested well…

Sign up to request clarification or add additional context in comments.

Comments

0

Apache Lang uses the Java API's Region Matching for their contains implementation. Hard to say which is faster on the surface. Sounds like an opportunity to build a simple test case and run it both ways and see.

2 Comments

I will try your suggestion. Sorry I'm not reputation enough to vote for your answer.
If you're going to do performance testing in this style, it's a good idea to use a framework, such as [OpenJDK JMH] openjdk.java.net/projects/code-tools/jmh

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.