Nested Named Functions compared to Module Pattern without last module pattern (v21)

Revision 21 of this benchmark created on


Description

Demonstrating the performance hit caused by nested functions and testing against module pattern, without certain module pattern.

Preparation HTML

<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

Ready to run.

Testing in
TestOps/sec
Optimized (No Nesting)
mySandwich('ham', 'cheese', mycallback);
ready
Nested Function
mySandwich('ham', 'cheese', function(sth) {  
    console.log('Finished eating my sandwich.'+sth);  

});
ready
Module Pattern (YUI style (http://www.yuiblog.com/blog/2007/06/12/module-pattern/))
 
ready

Revisions

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