Cumulative Sum

Benchmark created on


Setup

let n = [];
for (let i = 0; i < 100000; i++) {
	n.push(Math.floor(Math.random() * 10));
}

Test runner

Ready to run.

Testing in
TestOps/sec
A
A = (sum => value => sum += value)(0);
A(n);
ready
B
B = x => x.map((sum = 0, n => sum += n));
B(n);
ready
C
var C = [];
n.reduce((a,b,i) => { C[i] = a+b; },0);
ready
D
D = x => x.reduce(function(r, a) {
  r.push((r.length && r[r.length - 1] || 0) + a);
  return r;
}, []);
D(n);
ready
E
E = x => x.reduce((a, x, i) => [...a, x + (a[i-1] || 0)], []);
E(n);
ready
F
var F = n.concat(); //Copy initial array

for (var i = 1; i < n.length; i++) {
  	F[i] = F[i-1] + n[i];
}
ready
G
function G(nums) {
	let psum = 0;
	return nums.map(x => psum += x);
};
G(n);
ready
H
function H (N, fn) {
    var r = [N[0]];
    for (var i = 1; i < N.length; i++)
        r.push(fn(r[i - 1], N[i]));
    return r;
}
H(n, (x,y) => x+y);

ready
I
var output = [];
var sum = 0;

for(var i in n){
	sum = sum + n[i];
	output.push(sum)
}
ready
J
const J = ([head, ...tail]) =>
   tail.reduce((acc, x, index) => {
      acc.push(acc[index] + x);
      return acc
  }, [head]);
J(n)
ready
K
let K = [...n]; //Copy initial array

for (let i = 1; i < n.length; i++) {
  	K[i] = K[i-1] + n[i];
}
ready
L
let L = [n[0]];

for (let i = 1; i < n.length; i++) {
  	L.push(L[L.length - 1] + n[i])
}
ready

Revisions

You can edit these tests or add more tests to this page by appending /edit to the URL.