Skip to content

Instantly share code, notes, and snippets.

@alostale
Created December 13, 2017 09:42
Show Gist options
  • Save alostale/a4bedce6feba2f706773259c468227dd to your computer and use it in GitHub Desktop.
Save alostale/a4bedce6feba2f706773259c468227dd to your computer and use it in GitHub Desktop.
String contains vs contains ignore case
Generating data: 1000
Equals... 0 - 1ms
Contains... 100 - 1ms
Standard contains ignore case... 133 - 5ms
Apache commons contains ignore case... 133 - 13ms
---
Generating data: 10000
Equals... 0 - 1ms
Contains... 1000 - 2ms
Standard contains ignore case... 1333 - 5ms
Apache commons contains ignore case... 1333 - 7ms
---
Generating data: 100000
Equals... 0 - 7ms
Contains... 10000 - 10ms
Standard contains ignore case... 13333 - 53ms
Apache commons contains ignore case... 13333 - 67ms
---
Generating data: 1000000
Equals... 0 - 12ms
Contains... 100000 - 27ms
Standard contains ignore case... 133333 - 726ms
Apache commons contains ignore case... 133333 - 704ms
---
Generating data: 10000000
Equals... 0 - 107ms
Contains... 1000000 - 292ms
Standard contains ignore case... 1333333 - 7791ms
Apache commons contains ignore case... 1333333 - 6283ms
---
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.lang.RandomStringUtils;
import org.apache.commons.lang.StringUtils;
public class StringSearchBench {
private static final String STR = "from C_Order";
public static void main(String[] args) {
test(1_000);
test(10_000);
test(100_000);
test(1_000_000);
test(10_000_000);
}
private static void test(int loops) {
System.out.println("Generating data: " + loops);
List<String> queries = new ArrayList<>(loops);
for (int i = 0; i < loops; i++) {
String query = RandomStringUtils.randomAlphanumeric(50);
if (i % 10 == 0) {
query += STR;
} else if (i % 15 == 0) {
query += STR.toUpperCase();
}
queries.add(query);
}
{
System.out.print("Equals... ");
int matches = 0;
long t = System.currentTimeMillis();
for (String query : queries) {
if (query.equals(STR)) {
matches++;
}
}
System.out.println(matches + " - " + (System.currentTimeMillis() - t) + "ms");
}
{
System.out.print("Contains... ");
int matches = 0;
long t = System.currentTimeMillis();
for (String query : queries) {
if (query.contains(STR)) {
matches++;
}
}
System.out.println(matches + " - " + (System.currentTimeMillis() - t) + "ms");
}
{
System.out.print("Standard contains ignore case... ");
int matches = 0;
long t = System.currentTimeMillis();
String upperStr = STR.toUpperCase();
for (String query : queries) {
if (query.toUpperCase().contains(upperStr)) {
matches++;
}
}
System.out.println(matches + " - " + (System.currentTimeMillis() - t) + "ms");
}
{
System.out.print("Apache commons contains ignore case... ");
int matches = 0;
long t = System.currentTimeMillis();
for (String query : queries) {
if (StringUtils.containsIgnoreCase(query, STR)) {
matches++;
}
}
System.out.println(matches + " - " + (System.currentTimeMillis() - t) + "ms");
}
System.out.println("---");
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment