import java.util.ArrayList; import java.util.List; public class SplitStringEvery { private static final int numberOfRepeats = 3000000; private static final String textToRepeat = "1"; private static final int interval = 1; private static final int numberOfTestsToRun = 10; public static void main(String[] args) { StringBuilder sb = new StringBuilder(numberOfRepeats * textToRepeat.length()); for (int i = 0; i < numberOfRepeats; i++) { sb.append(textToRepeat); } final String stringToSplit = sb.toString(); List elapsedTimesSplit = new ArrayList(numberOfTestsToRun); List elapsedTimesSubstring = new ArrayList(numberOfTestsToRun); long startTime; long endTime; //Tests to run for (int i = 0; i < numberOfTestsToRun; i++) { startTime = System.currentTimeMillis(); stringToSplit.split("(?<=\\G.{" + interval + "})"); endTime = System.currentTimeMillis(); elapsedTimesSplit.add(endTime - startTime); //------------- startTime = System.currentTimeMillis(); splitStringEvery(stringToSplit, interval); endTime = System.currentTimeMillis(); elapsedTimesSubstring.add(endTime - startTime); } //Calculate averages: long splitSum = 0; long substringSum = 0; for (int i = 0; i < numberOfTestsToRun; i++) { splitSum += elapsedTimesSplit.get(i); substringSum += elapsedTimesSubstring.get(i); } long splitAvg = splitSum / elapsedTimesSplit.size(); long substringAvg = substringSum / elapsedTimesSplit.size(); //Print data: System.out.println("Split:"); System.out.println(elapsedTimesSplit); System.out.println("Substring:"); System.out.println(elapsedTimesSubstring); System.out.println("\nAverage:"); System.out.println("Split: " + splitAvg + " Substring: " + substringAvg); System.out.println("\nFactor:"); System.out.println(splitAvg / (double)substringAvg); } public static String[] splitStringEvery(String s, int interval) { int arrayLength = (int) Math.ceil(((s.length() / (double)interval))); String[] result = new String[arrayLength]; int j = 0; int lastIndex = result.length - 1; for (int i = 0; i < lastIndex; i++) { result[i] = s.substring(j, j + interval); j += interval; } result[lastIndex] = s.substring(j); return result; } }