Calculating mean: filter+reduce vs forEach vs loop

JavaScript performance comparison

Revision 43 of this test case created by

Preparation code


      
      <script>
Benchmark.prototype.setup = function() {
  var range = [];
  var possibleValues = [0,1,2,3,4,5,null,undefined]
  
  for (var i = 0; i < 10000; i++) {
      range.push(possibleValues[
        Math.floor(Math.random() * possibleValues.length)
      ]);
  }
  
  function isNumber(x) {
    const x2 = parseFloat(x);
    return !Number.isNaN(x2) && Number.isFinite(x2);
  }
  
  

};
</script>

Test runner

Warning! For accurate results, please disable Firebug before running the tests. (Why?)

Java applet disabled.

Testing in CCBot 2.0.0 / Other 0.0.0
Test Ops/sec
Loop
var sum = 0;
var count = 0;

for (var i = 0; i < range.length; i++) {
    if (isNumber(i)) {
        sum += i;
        count += 1;}
}
var result = sum / count;
pending…
Filter+reduce
var filteredValues = range.filter(val => isNumber(val))
var result = filteredValues.reduce(function(sum, val) { return sum + val; }) / filteredValues.length;
pending…
forEach
var sum = 0;
var count = 0;

range.forEach(function(val) {
    if (isNumber(i)) {
        sum += i;
        count += 1;}
});
var result = sum / count;
pending…

Compare results of other browsers

Revisions

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

0 Comments