Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Benchmarking Palindrome Checks in JavaScript
var Benchmark = require('benchmark');
var smallPalindrome = "noon";
var bigPalindrome = "nooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooon";
var smallNonPalindrome = "carnival";
var bigNonPalindrome = "carnivalcarnivalcarnivalcarnivalcarnivalcarnivalcarnivalcarnivalcarnivalcarnivalcarnivalcarnivalcarnivalcarnivalcarnivalcarnivalcarnivalcarnivalcarnivalcarnivalcarnivalcarnivalcarnivalcarnivalcarnivalcarnivalcarnivalcarnivalcarnivalcarnivalcarnivalcarnivalcarnivalcarnivalcarnivalcarnivalcarnivalcarnivalcarnivalcarnivalcarnivalcarnivalcarnivalcarnivalcarnivalcarnivalcarnivalcarnivalcarnivalcarnivalcarnivalcarnivalcarnivalcarnivalcarnivalcarnivalcarnivalcarnivalcarnivalcarnivalcarnivalcarnival";
function isPalindromeFor(str) {
for(var i = 0; i < str.length; i++) {
if (str[i] !== str[str.length - (i + 1)]) {
return false;
}
}
return true;
}
function isPalindrome(str) {
return str === str.split("").reverse().join("");
}
var suite = new Benchmark.Suite;
suite.add("for loop, small word, is palindrome", function() {
isPalindromeFor(smallPalindrome);
});
suite.add("array methods, small word, is palindrome", function() {
isPalindrome(smallPalindrome);
});
suite.add("for loop, big word, is palindrome", function() {
isPalindromeFor(bigPalindrome);
});
suite.add("array methods, big word, is palindrome", function() {
isPalindrome(bigPalindrome);
});
suite.add("for loop, small word, not palindrome", function() {
isPalindromeFor(smallNonPalindrome);
});
suite.add("array methods, small word, not palindrome", function() {
isPalindrome(smallNonPalindrome);
});
suite.add("for loop, big word, not palindrome", function() {
isPalindromeFor(bigNonPalindrome);
});
suite.add("array methods, big word, not palindrome", function() {
isPalindrome(bigNonPalindrome);
});
// add listeners
suite.on('cycle', function(event) {
console.log(String(event.target));
});
suite.on('complete', function() {
console.log("-------------");
console.log('Fastest: ' + this.filter('fastest').map('name') );
console.log('Slowest: ' + this.filter('slowest').map('name') );
})
suite.run({ 'async': true });
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.