Advertisement
Muskar2

Split vs. Substring

Sep 6th, 2012
1,672
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.42 KB | None | 0 0
  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. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement