Javascript Filter vs loop

Benchmark created on


Setup

var tempArray = [];
    
    Array.prototype.filterRemoved = function() {
    
      tempArray.length = 0;
    
    
      for (var i = this.length - 1; i >= 0; i--) {
        tempArray.push(this[i]);
      }
    
      this.length = 0;
    
      for (var i = tempArray.length - 1; i >= 0; i--) {
        if (!tempArray[i].ToBeRemoved) {
          this.push(tempArray[i]);
        }
      }
    }
    
    function TestObject() {
      this.ToBeRemoved = false;
    }
    
    var myTestObjects = [];
    for (var i = 0; i < 10000; i++) {
      var myNewObject = new TestObject();
      if (i % 2) {
        myNewObject.ToBeRemoved = true;
      }
    
      myTestObjects.push(myNewObject);
    
    }

Test runner

Ready to run.

Testing in
TestOps/sec
Filter
var Result = myTestObjects.filter(function(TestObject) {
  return !TestObject.ToBeRemoved;
});
ready
Loop
myTestObjects.filterRemoved();
ready

Revisions

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