Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2220)

Unified Diff: test/js-perf-test/SpreadCalls/spreadcalls.js

Issue 938443002: [es6] implement spread calls (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: rebase + clang-format Created 5 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: test/js-perf-test/SpreadCalls/spreadcalls.js
diff --git a/test/js-perf-test/SpreadCalls/spreadcalls.js b/test/js-perf-test/SpreadCalls/spreadcalls.js
new file mode 100644
index 0000000000000000000000000000000000000000..794c53f237e6357358aa98e304e4b64733f88b76
--- /dev/null
+++ b/test/js-perf-test/SpreadCalls/spreadcalls.js
@@ -0,0 +1,77 @@
+// Copyright 2014 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.
+
+new BenchmarkSuite('Call', [1000], [
+ new Benchmark('Call-Sum', false, false, 0,
+ CallSum, CallSumSetup,
+ CallSumTearDown),
+]);
+
+new BenchmarkSuite('CallMethod', [1000], [
+ new Benchmark('CallMethod-Sum', false, false, 0,
+ CallMethodSum, CallSumSetup, CallMethodSumTearDown),
+]);
+
+new BenchmarkSuite('CallNew', [1000], [
+ new Benchmark('CallNew-Sum', false, false, 0,
+ CallNewSum, CallSumSetup,
+ CallNewSumTearDown),
+]);
+
+var result;
+var objectToSpread;
+
+function sum() {
+ var result = arguments[0];
+ for (var i = 1; i < arguments.length; ++i) {
+ result += arguments[i];
+ }
+ return result;
+}
+
+function CallSumSetup() {
+ result = undefined;
+ objectToSpread = [];
+ for (var i = 0; i < 100; ++i) objectToSpread.push(i + 1);
+}
+
+function CallSum() {
+ result = sum(...objectToSpread);
+}
+
+function CallSumTearDown() {
+ var expected = 100 * (100 + 1) / 2;
+ return result === expected;
+}
+
+// ----------------------------------------------------------------------------
+
+var O = { sum: sum };
+function CallMethodSum() {
+ result = O.sum(...objectToSpread);
+}
+
+function CallMethodSumTearDown() {
+ var expected = 100 * (100 + 1) / 2;
+ return result === expected;
+}
+
+// ----------------------------------------------------------------------------
+
+function Sum() {
+ var result = arguments[0];
+ for (var i = 1; i < arguments.length; ++i) {
+ result += arguments[i];
+ }
+ return this.sum = result;
+}
+
+function CallNewSum() {
+ result = new Sum(...objectToSpread);
+}
+
+function CallNewSumTearDown() {
+ var expected = 100 * (100 + 1) / 2;
+ return result instanceof Sum && result.sum === expected;
+}

Powered by Google App Engine
This is Rietveld 408576698