| // 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); | |
| } |