diff options
Diffstat (limited to 'deps/v8/test/js-perf-test/ObjectFreeze/spread-call.js')
-rw-r--r-- | deps/v8/test/js-perf-test/ObjectFreeze/spread-call.js | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/deps/v8/test/js-perf-test/ObjectFreeze/spread-call.js b/deps/v8/test/js-perf-test/ObjectFreeze/spread-call.js new file mode 100644 index 0000000000..ec1cd5d277 --- /dev/null +++ b/deps/v8/test/js-perf-test/ObjectFreeze/spread-call.js @@ -0,0 +1,59 @@ +// Copyright 2019 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 setupArray(length) { + var a = new Array(length); + for (var i=0;i<length;i++) { + a[i] = ''+i; + } + return Object.freeze(a); +} + +const frozenSpreadArray = setupArray(100); + +function foo() { + var result = arguments[0]; + for (var i = 1; i < arguments.length; ++i) { + result += arguments[i]; + } + return result; +} + +// ---------------------------------------------------------------------------- +// Benchmark: SpreadCall +// ---------------------------------------------------------------------------- + +function SpreadCall() { + foo(...frozenSpreadArray); +} + + +// ---------------------------------------------------------------------------- +// Benchmark: SpreadCallSpreadLiteral +// ---------------------------------------------------------------------------- + +function SpreadCallSpreadLiteral() { + foo(...[...frozenSpreadArray]); +} + + +// ---------------------------------------------------------------------------- +// Benchmark: ApplySpreadLiteral +// ---------------------------------------------------------------------------- + +function ApplySpreadLiteral() { + foo.apply(this, [...frozenSpreadArray]); +} + +// ---------------------------------------------------------------------------- +// Setup and Run +// ---------------------------------------------------------------------------- + +function CreateBenchmark(name, f) { + new BenchmarkSuite(name, [10], [ new Benchmark(name, false, false, 0, f) ]); +} + +CreateBenchmark('ApplySpreadLiteral', ApplySpreadLiteral); +CreateBenchmark('SpreadCall', SpreadCall); +CreateBenchmark('SpreadCallSpreadLiteral', SpreadCallSpreadLiteral); |