60 lines
1.4 KiB
JavaScript
60 lines
1.4 KiB
JavaScript
|
// 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 setupArrayReduce(length) {
|
||
|
let a = new Array(length);
|
||
|
for (let i=0;i<length;i++) {
|
||
|
a[i] = ''+i;
|
||
|
}
|
||
|
return Object.freeze(a);
|
||
|
}
|
||
|
|
||
|
const kArraylength = 200;
|
||
|
const frozenArrayReduce = setupArrayReduce(kArraylength);
|
||
|
|
||
|
const reducer = (accumulator, currentValue) => accumulator + Number(currentValue);
|
||
|
|
||
|
function driverArrayReduce(n) {
|
||
|
let result = 0;
|
||
|
for (let i=0;i<n;i++) {
|
||
|
result = frozenArrayReduce.reduce(reducer);
|
||
|
}
|
||
|
return result;
|
||
|
}
|
||
|
|
||
|
const kIterations = 1e3;
|
||
|
|
||
|
function ArrayReduce() {
|
||
|
driverArrayReduce(kIterations);
|
||
|
}
|
||
|
|
||
|
const kIterationsWarmUp = [1e1, 1e2];
|
||
|
|
||
|
function ArrayReduceWarmUp() {
|
||
|
driverArrayReduce(kIterationsWarmUp[0]);
|
||
|
driverArrayReduce(kIterationsWarmUp[1]);
|
||
|
}
|
||
|
|
||
|
const kRun = 1e1;
|
||
|
createSuite('ArrayReduce', kRun, ArrayReduce, ArrayReduceWarmUp);
|
||
|
|
||
|
function driverArrayReduceRight(n) {
|
||
|
let result = 0;
|
||
|
for (let i=0;i<n;i++) {
|
||
|
result = frozenArrayReduce.reduceRight(reducer);
|
||
|
}
|
||
|
return result;
|
||
|
}
|
||
|
|
||
|
function ArrayReduceRight() {
|
||
|
driverArrayReduceRight(kIterations);
|
||
|
}
|
||
|
|
||
|
function ArrayReduceRightWarmUp() {
|
||
|
driverArrayReduceRight(kIterationsWarmUp[0]);
|
||
|
driverArrayReduceRight(kIterationsWarmUp[1]);
|
||
|
}
|
||
|
|
||
|
createSuite('ArrayReduceRight', kRun, ArrayReduceRight, ArrayReduceRightWarmUp);
|