Advertisement
Guest User

IndexOfBenchmark

a guest
Jan 27th, 2017
346
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.49 KB | None | 0 0
  1. import java.util.Random;
  2.  
  3. public class IndexOfBenchmark {
  4.     static Random rng = new Random(2017);
  5.     static String [] paths = new String[1000];
  6.     static final int loops = 100000;
  7.    
  8.     public static void main(String[] args) {
  9.         for (int i = 0; i < paths.length; i++) {
  10.             boolean odd = ((i & 1) == 1);
  11.             paths[i] = odd ? randomName() : randomNameWithSlash();
  12.         }
  13.         int acc = 0;
  14.         for (int i = 0; i < loops; i++) {
  15.             acc += StringContains();
  16.         }
  17.         for (int i = 0; i < loops; i++) {
  18.             acc += StringIndexOfChar();
  19.         }
  20.         for (int i = 0; i < loops; i++) {
  21.             acc += StringIndexOfString();
  22.         }
  23.         System.out.println("Contains warmup: "+acc);
  24.        
  25.         for (int t = 0; t < 10; t++) {
  26.             acc = 0;
  27.             long start = System.nanoTime();
  28.             for (int i = 0; i < loops; i++) {
  29.                 acc += StringContains();
  30.             }
  31.             long dur = System.nanoTime()-start;
  32.             System.out.println("String.contains(String): "+dur+"ns   acc="+acc);
  33.  
  34.             acc = 0;
  35.             start = System.nanoTime();
  36.             for (int i = 0; i < loops; i++) {
  37.                 acc += StringIndexOfChar();
  38.             }
  39.             dur = System.nanoTime()-start;
  40.             System.out.println("String.indexOf(char):    "+dur+"ns   acc="+acc);
  41.  
  42.             acc = 0;
  43.             start = System.nanoTime();
  44.             for (int i = 0; i < loops; i++) {
  45.                 acc += StringIndexOfString();
  46.             }
  47.             dur = System.nanoTime()-start;
  48.             System.out.println("String.indexOf(String):  "+dur+"ns   acc="+acc);
  49.            
  50.             System.out.println("---------------------------");
  51.         }
  52.        
  53.     }
  54.    
  55.     private static int StringContains() {
  56.         int acc = 0;
  57.         for (String s : paths) {
  58.             if (s.contains("/")) {
  59.                 acc++;
  60.             }
  61.         }
  62.         return acc;
  63.     }
  64.    
  65.     private static int StringIndexOfChar() {
  66.         int acc = 0;
  67.         for (String s : paths) {
  68.             if (s.indexOf('/') > -1)
  69.                 acc++;
  70.         }
  71.         return acc;
  72.     }
  73.     private static int StringIndexOfString() {
  74.         int acc = 0;
  75.         for (String s : paths) {
  76.             if (s.indexOf("/") > -1)
  77.                 acc++;
  78.         }
  79.         return acc;
  80.     }
  81.    
  82.  
  83.     private static String randomName() {
  84.         StringBuilder sb = new StringBuilder(32);
  85.         int len = 10 + rng.nextInt(22);
  86.         for (int i = 0; i < len; i++) {
  87.             sb.append((char)('a'+rng.nextInt(26)));
  88.         }
  89.         return sb.toString();
  90.     }
  91.     private static String randomNameWithSlash() {
  92.         StringBuilder sb = new StringBuilder(32);
  93.         int len1 = 5 + rng.nextInt(11);
  94.         int len2 = 4 + rng.nextInt(11);
  95.         for (int i = 0; i < len1; i++) {
  96.             sb.append((char)('a'+rng.nextInt(26)));
  97.         }
  98.         sb.append('/');
  99.         for (int i = 0; i < len2; i++) {
  100.             sb.append((char)('a'+rng.nextInt(26)));
  101.         }
  102.         return sb.toString();
  103.     }
  104. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement