diff options
Diffstat (limited to 'deps/v8/test/js-perf-test/ArrayLiteralInitialSpreadLargeDoubleHoley/run.js')
-rw-r--r-- | deps/v8/test/js-perf-test/ArrayLiteralInitialSpreadLargeDoubleHoley/run.js | 158 |
1 files changed, 158 insertions, 0 deletions
diff --git a/deps/v8/test/js-perf-test/ArrayLiteralInitialSpreadLargeDoubleHoley/run.js b/deps/v8/test/js-perf-test/ArrayLiteralInitialSpreadLargeDoubleHoley/run.js new file mode 100644 index 0000000000..72b83a3ada --- /dev/null +++ b/deps/v8/test/js-perf-test/ArrayLiteralInitialSpreadLargeDoubleHoley/run.js @@ -0,0 +1,158 @@ +// Copyright 2018 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. + +// Comparing different copy schemes against spread initial literals. +// Benchmarks for large holey double arrays. + +const largeHoleyArray = new Array(1e5); + +for (var i = 0; i < 100; i++) { + largeHoleyArray[i] = i + 6.66; +} + +for (var i = 5000; i < 5500; i++) { + largeHoleyArray[i] = i + 6.66; +} + +// ---------------------------------------------------------------------------- +// Benchmark: Spread +// ---------------------------------------------------------------------------- + +function SpreadLargeHoley() { + var newArr = [...largeHoleyArray]; + // basic sanity check + if (newArr.length != largeHoleyArray.length) throw 666; + return newArr; +} + +// ---------------------------------------------------------------------------- +// Benchmark: ForLength +// ---------------------------------------------------------------------------- + +function ForLengthLargeHoley() { + var newArr = new Array(largeHoleyArray.length); + for (let i = 0; i < largeHoleyArray.length; i++) { + newArr[i] = largeHoleyArray[i]; + } + // basic sanity check + if (newArr.length != largeHoleyArray.length) throw 666; + return newArr; +} + +// ---------------------------------------------------------------------------- +// Benchmark: ForLengthEmpty +// ---------------------------------------------------------------------------- + +function ForLengthEmptyLargeHoley() { + var newArr = []; + for (let i = 0; i < largeHoleyArray.length; i++) { + newArr[i] = largeHoleyArray[i]; + } + // basic sanity check + if (newArr.length != largeHoleyArray.length) throw 666; + return newArr; +} + +// ---------------------------------------------------------------------------- +// Benchmark: Slice +// ---------------------------------------------------------------------------- + +function SliceLargeHoley() { + var newArr = largeHoleyArray.slice(); + // basic sanity check + if (newArr.length != largeHoleyArray.length) throw 666; + return newArr; +} + +// ---------------------------------------------------------------------------- +// Benchmark: Slice0 +// ---------------------------------------------------------------------------- + +function Slice0LargeHoley() { + var newArr = largeHoleyArray.slice(0); + // basic sanity check + if (newArr.length != largeHoleyArray.length) throw 666; + return newArr; +} + +// ---------------------------------------------------------------------------- +// Benchmark: ConcatReceive +// ---------------------------------------------------------------------------- + +function ConcatReceiveLargeHoley() { + var newArr = largeHoleyArray.concat(); + // basic sanity check + if (newArr.length != largeHoleyArray.length) throw 666; + return newArr; +} + +// ---------------------------------------------------------------------------- +// Benchmark: ConcatArg +// ---------------------------------------------------------------------------- + +function ConcatArgLargeHoley() { + var newArr = [].concat(largeHoleyArray); + // basic sanity check + if (newArr.length != largeHoleyArray.length) throw 666; + return newArr; +} + +// ---------------------------------------------------------------------------- +// Benchmark: ForOfPush +// ---------------------------------------------------------------------------- + +function ForOfPushLargeHoley() { + var newArr = []; + for (let x of largeHoleyArray) { + newArr.push(x) + } + // basic sanity check + if (newArr.length != largeHoleyArray.length) throw 666; + return newArr; +} + +// ---------------------------------------------------------------------------- +// Benchmark: MapId +// ---------------------------------------------------------------------------- + +function MapIdLargeHoley() { + var newArr = largeHoleyArray.map(x => x); + // basic sanity check + if (newArr.length != largeHoleyArray.length) throw 666; + return newArr; +} + +// ---------------------------------------------------------------------------- +// Setup and Run +// ---------------------------------------------------------------------------- + +load('../base.js'); + +var success = true; + +function PrintResult(name, result) { + print(name + '-ArrayLiteralInitialSpreadLargeDoubleHoley(Score): ' + result); +} + +function PrintError(name, error) { + PrintResult('Error: ' + name, error); + success = false; +} + +// Run the benchmark (5 x 100) iterations instead of 1 second. +function CreateBenchmark(name, f) { + new BenchmarkSuite(name, [1000], [ new Benchmark(name, false, false, 5, f) ]); +} + +CreateBenchmark('Spread', SpreadLargeHoley); +CreateBenchmark('ForLength', ForLengthLargeHoley); +CreateBenchmark('ForLengthEmpty', ForLengthEmptyLargeHoley); +CreateBenchmark('Slice', SliceLargeHoley); +CreateBenchmark('Slice0', Slice0LargeHoley); +CreateBenchmark('ConcatReceive', ConcatReceiveLargeHoley); +CreateBenchmark('ConcatArg', ConcatArgLargeHoley); + +BenchmarkSuite.config.doWarmup = true; +BenchmarkSuite.config.doDeterministic = true; +BenchmarkSuite.RunSuites({NotifyResult: PrintResult, NotifyError: PrintError}); |