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