Last active
February 17, 2019 19:13
-
-
Save cwood821/7c32306cc8464a0930276aae51635813 to your computer and use it in GitHub Desktop.
Benchmarking Palindrome Checks in JavaScript
This file contains 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 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