summaryrefslogtreecommitdiff
path: root/deps/v8/test/js-perf-test/ObjectFreeze/spread-call.js
diff options
context:
space:
mode:
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.js59
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);