Skip to content

Instantly share code, notes, and snippets.

@cwood821
Last active February 17, 2019 19:13
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save cwood821/7c32306cc8464a0930276aae51635813 to your computer and use it in GitHub Desktop.
Save cwood821/7c32306cc8464a0930276aae51635813 to your computer and use it in GitHub Desktop.
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