Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.Random;
- public class IndexOfBenchmark {
- static Random rng = new Random(2017);
- static String [] paths = new String[1000];
- static final int loops = 100000;
- public static void main(String[] args) {
- for (int i = 0; i < paths.length; i++) {
- boolean odd = ((i & 1) == 1);
- paths[i] = odd ? randomName() : randomNameWithSlash();
- }
- int acc = 0;
- for (int i = 0; i < loops; i++) {
- acc += StringContains();
- }
- for (int i = 0; i < loops; i++) {
- acc += StringIndexOfChar();
- }
- for (int i = 0; i < loops; i++) {
- acc += StringIndexOfString();
- }
- System.out.println("Contains warmup: "+acc);
- for (int t = 0; t < 10; t++) {
- acc = 0;
- long start = System.nanoTime();
- for (int i = 0; i < loops; i++) {
- acc += StringContains();
- }
- long dur = System.nanoTime()-start;
- System.out.println("String.contains(String): "+dur+"ns acc="+acc);
- acc = 0;
- start = System.nanoTime();
- for (int i = 0; i < loops; i++) {
- acc += StringIndexOfChar();
- }
- dur = System.nanoTime()-start;
- System.out.println("String.indexOf(char): "+dur+"ns acc="+acc);
- acc = 0;
- start = System.nanoTime();
- for (int i = 0; i < loops; i++) {
- acc += StringIndexOfString();
- }
- dur = System.nanoTime()-start;
- System.out.println("String.indexOf(String): "+dur+"ns acc="+acc);
- System.out.println("---------------------------");
- }
- }
- private static int StringContains() {
- int acc = 0;
- for (String s : paths) {
- if (s.contains("/")) {
- acc++;
- }
- }
- return acc;
- }
- private static int StringIndexOfChar() {
- int acc = 0;
- for (String s : paths) {
- if (s.indexOf('/') > -1)
- acc++;
- }
- return acc;
- }
- private static int StringIndexOfString() {
- int acc = 0;
- for (String s : paths) {
- if (s.indexOf("/") > -1)
- acc++;
- }
- return acc;
- }
- private static String randomName() {
- StringBuilder sb = new StringBuilder(32);
- int len = 10 + rng.nextInt(22);
- for (int i = 0; i < len; i++) {
- sb.append((char)('a'+rng.nextInt(26)));
- }
- return sb.toString();
- }
- private static String randomNameWithSlash() {
- StringBuilder sb = new StringBuilder(32);
- int len1 = 5 + rng.nextInt(11);
- int len2 = 4 + rng.nextInt(11);
- for (int i = 0; i < len1; i++) {
- sb.append((char)('a'+rng.nextInt(26)));
- }
- sb.append('/');
- for (int i = 0; i < len2; i++) {
- sb.append((char)('a'+rng.nextInt(26)));
- }
- return sb.toString();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement