Pastebin launched a little side project called VERYVIRAL.com, check it out ;-) Want more features on Pastebin? Sign Up, it's FREE!
Guest

Split vs. Substring

By: Muskar2 on Sep 6th, 2012  |  syntax: Java  |  size: 2.42 KB  |  views: 263  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. import java.util.ArrayList;
  2. import java.util.List;
  3.  
  4. public class SplitStringEvery {
  5.         private static final int numberOfRepeats = 3000000;
  6.         private static final String textToRepeat = "1";
  7.         private static final int interval = 1;
  8.         private static final int numberOfTestsToRun = 10;
  9.  
  10.         public static void main(String[] args) {               
  11.                 StringBuilder sb = new StringBuilder(numberOfRepeats * textToRepeat.length());
  12.                
  13.                 for (int i = 0; i < numberOfRepeats; i++) {
  14.                         sb.append(textToRepeat);
  15.                 }
  16.                 final String stringToSplit = sb.toString();
  17.                
  18.                 List<Long> elapsedTimesSplit =  new ArrayList<Long>(numberOfTestsToRun);
  19.                 List<Long> elapsedTimesSubstring =  new ArrayList<Long>(numberOfTestsToRun);
  20.                
  21.                 long startTime;
  22.                 long endTime;
  23.                
  24.                
  25.                 //Tests to run
  26.                 for (int i = 0; i < numberOfTestsToRun; i++) {
  27.                         startTime = System.currentTimeMillis();
  28.                         stringToSplit.split("(?<=\\G.{" + interval + "})");
  29.                         endTime = System.currentTimeMillis();
  30.                         elapsedTimesSplit.add(endTime - startTime);
  31.                        
  32.                     //-------------
  33.  
  34.                         startTime = System.currentTimeMillis();
  35.                         splitStringEvery(stringToSplit, interval);
  36.                         endTime = System.currentTimeMillis();
  37.                         elapsedTimesSubstring.add(endTime - startTime);
  38.                 }
  39.                
  40.                 //Calculate averages:
  41.            
  42.             long splitSum = 0;
  43.             long substringSum = 0;
  44.             for (int i = 0; i < numberOfTestsToRun; i++) {
  45.                 splitSum += elapsedTimesSplit.get(i);
  46.                 substringSum += elapsedTimesSubstring.get(i);
  47.                 }
  48.            
  49.             long splitAvg = splitSum / elapsedTimesSplit.size();
  50.             long substringAvg = substringSum / elapsedTimesSplit.size();
  51.            
  52.             //Print data:
  53.             System.out.println("Split:");
  54.             System.out.println(elapsedTimesSplit);
  55.            
  56.             System.out.println("Substring:");
  57.             System.out.println(elapsedTimesSubstring);
  58.            
  59.             System.out.println("\nAverage:");
  60.             System.out.println("Split: " + splitAvg + " Substring: " + substringAvg);
  61.            
  62.             System.out.println("\nFactor:");
  63.             System.out.println(splitAvg / (double)substringAvg);
  64.         }
  65.        
  66.         public static String[] splitStringEvery(String s, int interval) {
  67.                 int arrayLength = (int) Math.ceil(((s.length() / (double)interval)));
  68.                 String[] result = new String[arrayLength];
  69.                
  70.                 int j = 0;
  71.                 int lastIndex = result.length - 1;
  72.                 for (int i = 0; i < lastIndex; i++) {
  73.                         result[i] = s.substring(j, j + interval);
  74.                         j += interval;
  75.                 }
  76.                 result[lastIndex] = s.substring(j);
  77.                
  78.                 return result;
  79.         }
  80. }