Created
December 13, 2017 09:42
-
-
Save alostale/a4bedce6feba2f706773259c468227dd to your computer and use it in GitHub Desktop.
String contains vs contains ignore case
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 | |
--- |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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