Iterative vs Recursive method invocation (v3)

Revision 3 of this benchmark created on


Setup

function demoStructure(someNumber) {
  		this.someNumber = someNumber;
  		this.someIncrementation = someNumber + 10;
  		this.someTrashData = {
  			"1" : someNumber +1,
  			"2" : someNumber +2,
  			"3" : someNumber +3,
  			"4" : someNumber +4,
  			"5" : someNumber +5,
  			"6" : someNumber +6,
  		};
  	}
  
  	demoStructure.prototype.doSomething = function() {
  		this.someIncrementation++;
  	}
  
  	demoStructure.prototype.recurse = function() {
      this.doSomething();
      if(this.someNumber == 0) return;
  var next = dataSource[(this.someNumber - 1)];
  next.recurse();
  	}
  
  	var testCount = 10000;
  	var indexLimit = testCount-1;
  	var dataSource = [];
  	for (var i = 0; i < testCount; i++) {
  		dataSource.push(new demoStructure(i));
  	}
  
  	function incrementIterative(limit) {
  		for (var i = 0; i < limit; i++) {
  			var cur = dataSource[i];
  			cur.doSomething();
  		}
  	}
  
  	function incrementRecursive(index) {
  		if (index < 0)
  			return;
  
  			var cur = dataSource[index];
  			cur.doSomething();
  
  
  		incrementRecursive(--index);
  	}

Test runner

Ready to run.

Testing in
TestOps/sec
Iterative 1000
incrementIterative(1000)
ready
Recursive 1000
incrementRecursive(1000);
ready
Iterative 100
incrementIterative(100)
ready
Recursive 100
incrementRecursive(100);
ready
Inner Recurse 100
dataSource[100].recurse();
ready

Revisions

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