string-concat.js 10.9 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192
// Copyright 2017 the V8 project authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

function addBenchmark(name, test) {
  new BenchmarkSuite(name, [1000],
      [
        new Benchmark(name, false, false, 0, test)
      ]);
}

addBenchmark('ShortString-StringConcat-2', ShortStringConcat2);
addBenchmark('ShortString-StringConcat-3', ShortStringConcat3);
addBenchmark('ShortString-StringConcat-5', ShortStringConcat5);
addBenchmark('ShortString-StringConcat-10', ShortStringConcat10);
addBenchmark('LongString-StringConcat-2', LongStringConcat2);
addBenchmark('LongString-StringConcat-3', LongStringConcat3);
addBenchmark('LongString-StringConcat-5', LongStringConcat5);
addBenchmark('LongString-StringConcat-10', LongStringConcat10);
addBenchmark('NumberString-StringConcat-2', NumberStringConcat2);
addBenchmark('NumberString-StringConcat-3', NumberStringConcat3);
addBenchmark('NumberString-StringConcat-5', NumberStringConcat5);
addBenchmark('NumberString-StringConcat-10', NumberStringConcat10);

function stringConcat2(a) {
  for (var i = 0; i < 100; ++i) {
    "s" + a; "s" + a; "s" + a; "s" + a; "s" + a; "s" + a; "s" + a; "s" + a; "s" + a; "s" + a;
    "s" + a; "s" + a; "s" + a; "s" + a; "s" + a; "s" + a; "s" + a; "s" + a; "s" + a; "s" + a;
    "s" + a; "s" + a; "s" + a; "s" + a; "s" + a; "s" + a; "s" + a; "s" + a; "s" + a; "s" + a;
    "s" + a; "s" + a; "s" + a; "s" + a; "s" + a; "s" + a; "s" + a; "s" + a; "s" + a; "s" + a;
    "s" + a; "s" + a; "s" + a; "s" + a; "s" + a; "s" + a; "s" + a; "s" + a; "s" + a; "s" + a;
    "s" + a; "s" + a; "s" + a; "s" + a; "s" + a; "s" + a; "s" + a; "s" + a; "s" + a; "s" + a;
    "s" + a; "s" + a; "s" + a; "s" + a; "s" + a; "s" + a; "s" + a; "s" + a; "s" + a; "s" + a;
    "s" + a; "s" + a; "s" + a; "s" + a; "s" + a; "s" + a; "s" + a; "s" + a; "s" + a; "s" + a;
    "s" + a; "s" + a; "s" + a; "s" + a; "s" + a; "s" + a; "s" + a; "s" + a; "s" + a; "s" + a;
    "s" + a; "s" + a; "s" + a; "s" + a; "s" + a; "s" + a; "s" + a; "s" + a; "s" + a; "s" + a;
  }
}

function stringConcat3(a, b) {
  for (var i = 0; i < 100; ++i) {
    "s" + a + b; "s" + a + b; "s" + a + b; "s" + a + b; "s" + a + b;
    "s" + a + b; "s" + a + b; "s" + a + b; "s" + a + b; "s" + a + b;
    "s" + a + b; "s" + a + b; "s" + a + b; "s" + a + b; "s" + a + b;
    "s" + a + b; "s" + a + b; "s" + a + b; "s" + a + b; "s" + a + b;
    "s" + a + b; "s" + a + b; "s" + a + b; "s" + a + b; "s" + a + b;
    "s" + a + b; "s" + a + b; "s" + a + b; "s" + a + b; "s" + a + b;
    "s" + a + b; "s" + a + b; "s" + a + b; "s" + a + b; "s" + a + b;
    "s" + a + b; "s" + a + b; "s" + a + b; "s" + a + b; "s" + a + b;
    "s" + a + b; "s" + a + b; "s" + a + b; "s" + a + b; "s" + a + b;
    "s" + a + b; "s" + a + b; "s" + a + b; "s" + a + b; "s" + a + b;
    "s" + a + b; "s" + a + b; "s" + a + b; "s" + a + b; "s" + a + b;
    "s" + a + b; "s" + a + b; "s" + a + b; "s" + a + b; "s" + a + b;
    "s" + a + b; "s" + a + b; "s" + a + b; "s" + a + b; "s" + a + b;
    "s" + a + b; "s" + a + b; "s" + a + b; "s" + a + b; "s" + a + b;
    "s" + a + b; "s" + a + b; "s" + a + b; "s" + a + b; "s" + a + b;
    "s" + a + b; "s" + a + b; "s" + a + b; "s" + a + b; "s" + a + b;
    "s" + a + b; "s" + a + b; "s" + a + b; "s" + a + b; "s" + a + b;
    "s" + a + b; "s" + a + b; "s" + a + b; "s" + a + b; "s" + a + b;
    "s" + a + b; "s" + a + b; "s" + a + b; "s" + a + b; "s" + a + b;
    "s" + a + b; "s" + a + b; "s" + a + b; "s" + a + b; "s" + a + b;
  }
}

function stringConcat5(a, b, c, d) {
  for (var i = 0; i < 100; ++i) {
    "s" + a + b + c + d; "s" + a + b + c + d; "s" + a + b + c + d; "s" + a + b + c + d; "s" + a + b + c + d;
    "s" + a + b + c + d; "s" + a + b + c + d; "s" + a + b + c + d; "s" + a + b + c + d; "s" + a + b + c + d;
    "s" + a + b + c + d; "s" + a + b + c + d; "s" + a + b + c + d; "s" + a + b + c + d; "s" + a + b + c + d;
    "s" + a + b + c + d; "s" + a + b + c + d; "s" + a + b + c + d; "s" + a + b + c + d; "s" + a + b + c + d;
    "s" + a + b + c + d; "s" + a + b + c + d; "s" + a + b + c + d; "s" + a + b + c + d; "s" + a + b + c + d;
    "s" + a + b + c + d; "s" + a + b + c + d; "s" + a + b + c + d; "s" + a + b + c + d; "s" + a + b + c + d;
    "s" + a + b + c + d; "s" + a + b + c + d; "s" + a + b + c + d; "s" + a + b + c + d; "s" + a + b + c + d;
    "s" + a + b + c + d; "s" + a + b + c + d; "s" + a + b + c + d; "s" + a + b + c + d; "s" + a + b + c + d;
    "s" + a + b + c + d; "s" + a + b + c + d; "s" + a + b + c + d; "s" + a + b + c + d; "s" + a + b + c + d;
    "s" + a + b + c + d; "s" + a + b + c + d; "s" + a + b + c + d; "s" + a + b + c + d; "s" + a + b + c + d;
    "s" + a + b + c + d; "s" + a + b + c + d; "s" + a + b + c + d; "s" + a + b + c + d; "s" + a + b + c + d;
    "s" + a + b + c + d; "s" + a + b + c + d; "s" + a + b + c + d; "s" + a + b + c + d; "s" + a + b + c + d;
    "s" + a + b + c + d; "s" + a + b + c + d; "s" + a + b + c + d; "s" + a + b + c + d; "s" + a + b + c + d;
    "s" + a + b + c + d; "s" + a + b + c + d; "s" + a + b + c + d; "s" + a + b + c + d; "s" + a + b + c + d;
    "s" + a + b + c + d; "s" + a + b + c + d; "s" + a + b + c + d; "s" + a + b + c + d; "s" + a + b + c + d;
    "s" + a + b + c + d; "s" + a + b + c + d; "s" + a + b + c + d; "s" + a + b + c + d; "s" + a + b + c + d;
    "s" + a + b + c + d; "s" + a + b + c + d; "s" + a + b + c + d; "s" + a + b + c + d; "s" + a + b + c + d;
    "s" + a + b + c + d; "s" + a + b + c + d; "s" + a + b + c + d; "s" + a + b + c + d; "s" + a + b + c + d;
    "s" + a + b + c + d; "s" + a + b + c + d; "s" + a + b + c + d; "s" + a + b + c + d; "s" + a + b + c + d;
    "s" + a + b + c + d; "s" + a + b + c + d; "s" + a + b + c + d; "s" + a + b + c + d; "s" + a + b + c + d;
  }
}

function stringConcat10(a, b, c, d, e, f, g, h, i) {
  for (var j = 0; j < 100; ++j) {
    "s" + a + b + c + d + e + f + g + h + i; "s" + a + b + c + d + e + f + g + h + i;
    "s" + a + b + c + d + e + f + g + h + i; "s" + a + b + c + d + e + f + g + h + i;
    "s" + a + b + c + d + e + f + g + h + i; "s" + a + b + c + d + e + f + g + h + i;
    "s" + a + b + c + d + e + f + g + h + i; "s" + a + b + c + d + e + f + g + h + i;
    "s" + a + b + c + d + e + f + g + h + i; "s" + a + b + c + d + e + f + g + h + i;
    "s" + a + b + c + d + e + f + g + h + i; "s" + a + b + c + d + e + f + g + h + i;
    "s" + a + b + c + d + e + f + g + h + i; "s" + a + b + c + d + e + f + g + h + i;
    "s" + a + b + c + d + e + f + g + h + i; "s" + a + b + c + d + e + f + g + h + i;
    "s" + a + b + c + d + e + f + g + h + i; "s" + a + b + c + d + e + f + g + h + i;
    "s" + a + b + c + d + e + f + g + h + i; "s" + a + b + c + d + e + f + g + h + i;
    "s" + a + b + c + d + e + f + g + h + i; "s" + a + b + c + d + e + f + g + h + i;
    "s" + a + b + c + d + e + f + g + h + i; "s" + a + b + c + d + e + f + g + h + i;
    "s" + a + b + c + d + e + f + g + h + i; "s" + a + b + c + d + e + f + g + h + i;
    "s" + a + b + c + d + e + f + g + h + i; "s" + a + b + c + d + e + f + g + h + i;
    "s" + a + b + c + d + e + f + g + h + i; "s" + a + b + c + d + e + f + g + h + i;
    "s" + a + b + c + d + e + f + g + h + i; "s" + a + b + c + d + e + f + g + h + i;
    "s" + a + b + c + d + e + f + g + h + i; "s" + a + b + c + d + e + f + g + h + i;
    "s" + a + b + c + d + e + f + g + h + i; "s" + a + b + c + d + e + f + g + h + i;
    "s" + a + b + c + d + e + f + g + h + i; "s" + a + b + c + d + e + f + g + h + i;
    "s" + a + b + c + d + e + f + g + h + i; "s" + a + b + c + d + e + f + g + h + i;
    "s" + a + b + c + d + e + f + g + h + i; "s" + a + b + c + d + e + f + g + h + i;
    "s" + a + b + c + d + e + f + g + h + i; "s" + a + b + c + d + e + f + g + h + i;
    "s" + a + b + c + d + e + f + g + h + i; "s" + a + b + c + d + e + f + g + h + i;
    "s" + a + b + c + d + e + f + g + h + i; "s" + a + b + c + d + e + f + g + h + i;
    "s" + a + b + c + d + e + f + g + h + i; "s" + a + b + c + d + e + f + g + h + i;
    "s" + a + b + c + d + e + f + g + h + i; "s" + a + b + c + d + e + f + g + h + i;
    "s" + a + b + c + d + e + f + g + h + i; "s" + a + b + c + d + e + f + g + h + i;
    "s" + a + b + c + d + e + f + g + h + i; "s" + a + b + c + d + e + f + g + h + i;
    "s" + a + b + c + d + e + f + g + h + i; "s" + a + b + c + d + e + f + g + h + i;
    "s" + a + b + c + d + e + f + g + h + i; "s" + a + b + c + d + e + f + g + h + i;
    "s" + a + b + c + d + e + f + g + h + i; "s" + a + b + c + d + e + f + g + h + i;
    "s" + a + b + c + d + e + f + g + h + i; "s" + a + b + c + d + e + f + g + h + i;
    "s" + a + b + c + d + e + f + g + h + i; "s" + a + b + c + d + e + f + g + h + i;
    "s" + a + b + c + d + e + f + g + h + i; "s" + a + b + c + d + e + f + g + h + i;
    "s" + a + b + c + d + e + f + g + h + i; "s" + a + b + c + d + e + f + g + h + i;
    "s" + a + b + c + d + e + f + g + h + i; "s" + a + b + c + d + e + f + g + h + i;
    "s" + a + b + c + d + e + f + g + h + i; "s" + a + b + c + d + e + f + g + h + i;
    "s" + a + b + c + d + e + f + g + h + i; "s" + a + b + c + d + e + f + g + h + i;
    "s" + a + b + c + d + e + f + g + h + i; "s" + a + b + c + d + e + f + g + h + i;
    "s" + a + b + c + d + e + f + g + h + i; "s" + a + b + c + d + e + f + g + h + i;
    "s" + a + b + c + d + e + f + g + h + i; "s" + a + b + c + d + e + f + g + h + i;
    "s" + a + b + c + d + e + f + g + h + i; "s" + a + b + c + d + e + f + g + h + i;
    "s" + a + b + c + d + e + f + g + h + i; "s" + a + b + c + d + e + f + g + h + i;
    "s" + a + b + c + d + e + f + g + h + i; "s" + a + b + c + d + e + f + g + h + i;
    "s" + a + b + c + d + e + f + g + h + i; "s" + a + b + c + d + e + f + g + h + i;
    "s" + a + b + c + d + e + f + g + h + i; "s" + a + b + c + d + e + f + g + h + i;
    "s" + a + b + c + d + e + f + g + h + i; "s" + a + b + c + d + e + f + g + h + i;
    "s" + a + b + c + d + e + f + g + h + i; "s" + a + b + c + d + e + f + g + h + i;
    "s" + a + b + c + d + e + f + g + h + i; "s" + a + b + c + d + e + f + g + h + i;
    "s" + a + b + c + d + e + f + g + h + i; "s" + a + b + c + d + e + f + g + h + i;
  }
}

function ShortStringConcat2() {
  stringConcat2("a");
}

function ShortStringConcat3() {
  stringConcat3("a", "b");
}

function ShortStringConcat5() {
  stringConcat5("a", "b", "c", "d");
}

function ShortStringConcat10() {
  stringConcat10("a", "b", "c", "d", "e", "f", "g", "h", "i");
}

function LongStringConcat2() {
  stringConcat2("long string over consmin");
}

function LongStringConcat3() {
  stringConcat3("long string ", "over consmin");
}

function LongStringConcat5() {
  stringConcat5("long ", "string ", "over ", "consmin");
}

function LongStringConcat10() {
  stringConcat10("long ", "string ", "over ", "consmin ", "long ", "string ",
                 "over ", "consmin", "done");
}

function NumberStringConcat2() {
  stringConcat2(123.456);
}

function NumberStringConcat3() {
  stringConcat3(1, 0.2345);
}

function NumberStringConcat5() {
  stringConcat5(1, 2, 3, 4.5, 5.6);
}

function NumberStringConcat10() {
  stringConcat10(10, 2345, 5e10, 3.14, 987654321, 21.56789, 2, 3, 4);
}