Skip to content

Instantly share code, notes, and snippets.

@francisbrito
Created May 1, 2013 12:35
Show Gist options
  • Save francisbrito/5495066 to your computer and use it in GitHub Desktop.
Save francisbrito/5495066 to your computer and use it in GitHub Desktop.
A simple performance tests written in JavaScript using Node.js + Async module. Note: Assumes 'async' module is installed.
var fs = require('fs');
var async = require('async');
var count = 0;
var startTime = Date.now();
fs.readFile('seeds.txt', { encoding: 'utf-8' }, function(err, text){
var lines = text.split('\n');
var fnArray = [];
for (var i = 0; i < lines.length; i++) {
var bounds = lines[i].split(' ');
// Le magic of closures (& self-callingness)!
fnArray.push((function(lower, upper){
return function(cb){
cb(null, palindromeCountBetween(lower, upper));
}
})(bounds[0], bounds[1]));
};
async.parallel(fnArray, function(err, results){
for (var i = 0; i < results.length; i++) {
count += results[i];
};
console.log('Count: %d', count);
console.log('%s secs', (Date.now() - startTime) / 1000);
});
});
function palindromeCountBetween(lower, upper) {
var result = 0;
var l = Number(lower);
var u = Number(upper);
for (var i = l; i <= u; i++) {
if (isPalindrome(i)) {
result++;
};
};
return result;
}
function isPalindrome(x) {
var reversed = 0;
var temp = x;
while(temp > 0) {
reversed = reversed * 10 + temp % 10;
temp = parseInt(temp / 10);
}
return reversed == x; // I already know types, so no conversion required.
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment