| // Copyright 2015 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('Basic1', [1000], [ |
| new Benchmark('BasicRest1', false, false, 0, |
| BasicRest1, BasicRest1Setup, BasicRest1TearDown) |
| ]); |
| |
| new BenchmarkSuite('ReturnArgsBabel', [10000], [ |
| new Benchmark('ReturnArgsBabel', false, false, 0, |
| ReturnArgsBabel, ReturnArgsBabelSetup, |
| ReturnArgsBabelTearDown) |
| ]); |
| |
| new BenchmarkSuite('ReturnArgsNative', [10000], [ |
| new Benchmark('ReturnArgsNative', false, false, 0, |
| ReturnArgsNative, ReturnArgsNativeSetup, |
| ReturnArgsNativeTearDown) |
| ]); |
| |
| // ---------------------------------------------------------------------------- |
| |
| var result; |
| |
| function basic_rest_fn_1(factor, ...values) { |
| var result = 0; |
| for (var i = 0; i < values.length; ++i) { |
| result += (factor * values[i]); |
| } |
| return result; |
| } |
| |
| function BasicRest1Setup() {} |
| |
| function BasicRest1() { |
| result = basic_rest_fn_1(10, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10); |
| } |
| |
| function BasicRest1TearDown() { |
| return result == 550; |
| } |
| |
| // ---------------------------------------------------------------------------- |
| |
| var length = 50; |
| var numbers = Array.apply(null, {length}).map(Number.call, Number); |
| var strings = numbers.map(String.call, String); |
| |
| function ReturnArgsBabelFunction(unused) { |
| "use strict"; |
| for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), |
| _key = 1; |
| _key < _len; _key++) { |
| args[_key - 1] = arguments[_key]; |
| } |
| return args; |
| } |
| |
| function ReturnArgsBabelSetup() { |
| // Warm up with HOLEY_ELEMENTS |
| result = ReturnArgsBabelFunction(...strings); |
| // Warm up with HOLEY_SMI_ELEMENTS |
| result = ReturnArgsBabelFunction(...numbers); |
| } |
| |
| function ReturnArgsBabel() { |
| result = ReturnArgsBabelFunction(...strings); |
| result = ReturnArgsBabelFunction(...numbers); |
| } |
| |
| function ReturnArgsBabelTearDown() { |
| return result.indexOf(0) === 0; |
| } |
| |
| // ---------------------------------------------------------------------------- |
| |
| function ReturnArgsNativeFunction(unused, ...args) { |
| return args; |
| } |
| |
| function ReturnArgsNativeSetup() { |
| // Warm up with HOLEY_ELEMENTS |
| result = ReturnArgsNativeFunction(...strings); |
| // Warm up with HOLEY_SMI_ELEMENTS |
| result = ReturnArgsNativeFunction(...numbers); |
| } |
| |
| function ReturnArgsNative() { |
| result = ReturnArgsNativeFunction(...strings); |
| result = ReturnArgsNativeFunction(...numbers); |
| } |
| |
| function ReturnArgsNativeTearDown() { |
| return result.indexOf(0) === 0; |
| } |