Create a gist now

Instantly share code, notes, and snippets.

What would you like to do?
<script>
var Test = function () {};
Test.prototype.a = function () {};
Test.prototype.b = function () {};
Test.prototype.c = function () {};
Test.prototype.d = function () {};
Test.prototype.e = function () {};
Test.prototype.f = function () {};
Test.prototype.g = function () {};
Test.prototype.h = function () {};
Test.prototype.i = function () {};
Test.prototype.j = function () {};
Test.prototype.k = function () {};
window.ary = [];
for (var i = 0; i < 10000; ++i) {
ary.push(new Test());
}
</script>
<script>
var Test = function () {
var test = {};
test.a = function () {};
test.b = function () {};
test.c = function () {};
test.d = function () {};
test.e = function () {};
test.f = function () {};
test.g = function () {};
test.h = function () {};
test.i = function () {};
test.j = function () {};
test.k = function () {};
return test;
};
window.ary = [];
for (var i = 0; i < 10000; ++i) {
ary.push(Test());
}
</script>
@jfirebaugh

This comment has been minimized.

Show comment Hide comment
@jfirebaugh

jfirebaugh Oct 26, 2012

These benchmarks compare the memory usage for classical vs. module pattern objects.

In my tests (Chrome 22.0.1229.94), classical.html generates a 1011 KB heap, while module.html generates a 5.3 MB heap. Most (76%) of the module heap is closures -- one for each function for each instance.

Conclusion: beware using the module pattern for heavily allocated classes.

Owner

jfirebaugh commented Oct 26, 2012

These benchmarks compare the memory usage for classical vs. module pattern objects.

In my tests (Chrome 22.0.1229.94), classical.html generates a 1011 KB heap, while module.html generates a 5.3 MB heap. Most (76%) of the module heap is closures -- one for each function for each instance.

Conclusion: beware using the module pattern for heavily allocated classes.

@jfirebaugh

This comment has been minimized.

Show comment Hide comment
@jfirebaugh

jfirebaugh Oct 26, 2012

Real-world example from @domenic: tmpvar/jsdom#509, fixed by chad3814/CSSStyleDeclaration@33d2ba3.

Owner

jfirebaugh commented Oct 26, 2012

Real-world example from @domenic: tmpvar/jsdom#509, fixed by chad3814/CSSStyleDeclaration@33d2ba3.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment