Skip to content

Instantly share code, notes, and snippets.

@morphar
Created April 23, 2013 12:28
Show Gist options
  • Save morphar/5443165 to your computer and use it in GitHub Desktop.
Save morphar/5443165 to your computer and use it in GitHub Desktop.
Interesting little experiment... I have seen many assume that "classes" in node.js is slow... This experiment show that the difference between a module which exports multiple functions vs a module that exports a single class, is almost non-existent! If anything, it shows that we shouldn't be afraid to create new instances of "classes"! That was …
var ModClassed = require('./mod-classed');
var modClean = require('./mod-clean');
var modClassed = new ModClassed();
var multiFactor = 10000;
// Doing classed stuff
console.time('classed');
for(var i1=0 ; i1 < multiFactor ; i1++) {
var number1 = modClassed.addTimesMany(10, 10, multiFactor);
number1 = modClassed.multiplyTimesMany(number1, 10, multiFactor);
}
console.timeEnd('classed');
// Doing classed stuff with new
console.time('classed new');
for(var i2=0 ; i2 < multiFactor ; i2++) {
var modClassed2 = new ModClassed();
var number2 = modClassed2.addTimesMany(10, 10, multiFactor);
number2 = modClassed2.multiplyTimesMany(number2, 10, multiFactor);
}
console.timeEnd('classed new');
// Doing clean stuff
console.time('clean');
for(var i3=0 ; i3 < multiFactor ; i3++) {
var number3 = modClean.addTimesMany(10, 10, multiFactor);
number3 = modClean.multiplyTimesMany(number3, 10, multiFactor);
}
console.timeEnd('clean');
var modClassed = function() {};
module.exports = modClassed;
modClassed.prototype.addTimesMany = function(startNumber, addWhat, howMany) {
startNumber = parseInt(startNumber);
for(var i=0; i < howMany ; i++) {
startNumber += parseInt(addWhat);
}
return startNumber;
};
modClassed.prototype.multiplyTimesMany = function(startNumber, addWhat, howMany) {
startNumber = parseInt(startNumber);
for(var i=0; i < howMany ; i++) {
startNumber = (startNumber * parseInt(addWhat));
}
return startNumber;
};
exports.addTimesMany = function(startNumber, addWhat, howMany) {
startNumber = parseInt(startNumber);
for(var i=0; i < howMany ; i++) {
startNumber += parseInt(addWhat);
}
return startNumber;
};
exports.multiplyTimesMany = function(startNumber, addWhat, howMany) {
startNumber = parseInt(startNumber);
for(var i=0; i < howMany ; i++) {
startNumber = (startNumber * parseInt(addWhat));
}
return startNumber;
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment