Nested Named Functions compared to Module Pattern without last module pattern
JavaScript performance comparison
Info
Demonstrating the performance hit caused by nested functions and testing against module pattern, without certain module pattern.
Preparation code
<script>
(function() {
// Nested function
person = function(age) {
function getNextAge() {
return age + 1;
}
return getNextAge();
}
// Non nested function inner function
function getNextAge2(age) {
return age + 1;
}
// Non nested function
person2 = function(age) {
return getNextAge2(age);
}
}());
// 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);
}
};
}());
var person3 = myNamespace.module1.person3;
// 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.
| Test | Ops/sec | |
|---|---|---|
Optimized (No Nesting) |
|
pending… |
Nested Function |
|
pending… |
Module Pattern (YUI style (http://www.yuiblog.com/blog/2007/06/12/module-pattern/)) |
|
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. Here’s a list of current revisions for this page:
- Revision 3: published by gdsf
- Revision 4: published
- Revision 5: published by gdsf
- Revision 6: published
- Revision 7: published
- Revision 9: published
- Revision 10: published
- Revision 13: published
- Revision 14: published
- Revision 15: published
- Revision 16: published
- Revision 17: published
- Revision 18: published
- Revision 19: published
- Revision 20: published
- Revision 21: published
- Revision 22: published
- Revision 23: published
- Revision 24: published by max jooher
0 comments