Hi regex/String team, We would like to contribute a performance improvement for Matcher.
Please file a bug. category: java_util_regex Synopsis: Faster Matcher by replacing StringBuffer with StringBuilder Description: The old Matcher API and implementation depend on the old StringBuffer class. The use of StringBuilder gives measurable performance improvement in real world applications. http://cr.openjdk.java.net/~martin/webrevs/openjdk7/Matcher-perf/ Written by Jeremy Manson. Here's a microbenchmark, where it gives 25% win: public class StringReplace { static String jabber = "Twas brillig, and the slithy toves " + "Did gyre and gimble in the wabe; " + "All mimsy were the borogoves, " + "And the mome raths outgrabe. " + " " + "Beware the Jabberwock, my son! " + "The jaws that bite, the claws that catch! " + "Beware the Jubjub bird, and shun " + "The frumious Bandersnatch!" + " " + "He took his vorpal sword in hand: " + "Long time the manxome foe he soughtâ " + "So rested he by the Tumtum tree, " + "And stood awhile in thought. " + " " + "And as in uffish thought he stood, " + "The Jabberwock, with eyes of flame, " + "Came whiffling through the tulgey wood, " + "And burbled as it came! " + " " + "One, two! One, two! and through and through " + "The vorpal blade went snicker-snack! " + "He left it dead, and with its head " + "He went galumphing back. " + " " + "And hast thou slain the Jabberwock? " + "Come to my arms, my beamish boy! " + "O frabjous day! Callooh! Callay!" +" " + "He chortled in his joy. " + " " + "'Twas brillig, and the slithy toves " + "Did gyre and gimble in the wabe; " + "All mimsy were the borogoves, " + "And the mome raths outgrabe?"; public static void replace() { long start = System.currentTimeMillis(); for (int i = 0; i < 100000; i++) { jabber.replaceAll("the", "ze"); } long stop = System.currentTimeMillis(); System.out.println(stop); System.out.println(start); System.out.println(stop - start); } public static void main(String[] args) { for (int i = 0; i < 5; i++) { replace(); } } }
