Created
May 1, 2013 12:35
-
-
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.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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