Nested Named Functions compared to Module Pattern without last module pattern

JavaScript performance comparison

Revision 22 of this test case created by

Preparation code

<script>

function mySandwich(param1, param2, callback) {  
    console.log('Started eating my sandwich.\n\nIt has: ' + param1 + ', ' + param2);  
    var sth = "test";
    callback(sth);  
}  
  


    // Non nested function inner function

    function mycallback(sth) {
      console.log('Finished eating my sandwich.' + sth); 

    }


  

// YUI style (http://www.yuiblog.com/blog/2007/06/12/module-pattern/)
var myNamespace = myNamespace || {};
myNamespace.module1 = (function() {
         
    //"private" method:
    var getNextAge3 = function(age) {
        return age + 1;
    }          
      
    return {
        person3: function(age) {
            return getNextAge3(age);
        }
    };
}());


// Adding New Functionality to the person4
// http://enterprisejquery.com/2010/10/how-good-c-habits-can-encourage-bad-javascript-habits-part-1/
(function( person4, $, undefined ) {
		    
    person4.Age = 0;
		    		
    //Public Method
    person4.getNextAge = function() {
        return person4.Age + 1;
    };    
}( window.person4 = window.person4 || {}, {} ));

</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
Optimized (No Nesting)
mySandwich('ham', 'cheese', mycallback);
pending…
Nested Function
mySandwich('ham', 'cheese', function(sth) {  
    console.log('Finished eating my sandwich.'+sth);  

});
pending…
still nested
mySandwich('ham', 'cheese', function(sth) {  
    console.log('Finished eating my sandwich.'+sth);  

});
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