Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 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<Long> elapsedTimesSplit = new ArrayList<Long>(numberOfTestsToRun);
- List<Long> elapsedTimesSubstring = new ArrayList<Long>(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;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement