Skip to content

Instantly share code, notes, and snippets.

@morphar
Last active February 8, 2018 06:55
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save morphar/5317863 to your computer and use it in GitHub Desktop.
Save morphar/5317863 to your computer and use it in GitHub Desktop.
A quick speed comparison between bcrypt and bcrypt-nodejs for node.js. bcrypt-nodejs is approximately 3 times as slow as bcrypt. If you try this out yourself, be sure to only run 1 test at a time, to get correct results.
var bcrypt = require('bcrypt');
var bcrypt2 = require('bcrypt-nodejs');
var bcryptHashTests = 10;
var bcryptCompareTests = 10;
/* Generate */
console.time('bcrypt-sync-gen');
for(var i=1 ; i <= bcryptHashTests ; i++) {
var hash = bcrypt.hashSync('bacon', 10);
}
console.timeEnd('bcrypt-sync-gen');
//var bcryptHashCounter = 0;
//console.time('bcrypt-async-gen');
//for(var i=1 ; i <= bcryptHashTests ; i++) {
// bcrypt.hash('bacon', 10, function(err, hash) {
// bcryptHashCounter++;
// if(bcryptHashCounter == bcryptHashTests) {
// console.timeEnd('bcrypt-async-gen');
// }
// });
//}
/* Generate 2 */
//console.time('bcrypt2-sync-gen');
//for(var i=1 ; i <= bcryptHashTests ; i++) {
// var hash = bcrypt2.hashSync('bacon');
//}
//console.timeEnd('bcrypt2-sync-gen');
//var bcrypt2HashCounter = 0;
//console.time('bcrypt2-async-gen');
//for(var i=1 ; i <= bcryptHashTests ; i++) {
// bcrypt2.hash('bacon', null, null, function(err, hash) {
// bcrypt2HashCounter++;
// if(bcrypt2HashCounter == bcryptHashTests) {
// console.timeEnd('bcrypt2-async-gen');
// }
// });
//}
/* Compare */
//var hash = '$2a$10$5Gbvwh2x8XxWl7IWLVlHV.KgLSAhVnhOlNu/cA.1fjAsINvWRHUza';
//console.time('bcrypt-compare-async-wrong');
//var bcryptCompareAsyncWrongCounter = 0;
//for(var i=1 ; i <= bcryptCompareTests ; i++) {
// bcrypt.compare("B4c0/\/", hash, function(err, res) {
// bcryptCompareAsyncWrongCounter++;
// if(bcryptCompareAsyncWrongCounter == bcryptCompareTests) {
// console.timeEnd('bcrypt-compare-async-wrong');
// }
// });
//}
//console.time('bcrypt-compare-async-correct');
//var bcryptCompareAsyncCorrectCounter = 0;
//for(var i=1 ; i <= bcryptCompareTests ; i++) {
// bcrypt.compare("bacon", hash, function(err, res) {
// bcryptCompareAsyncCorrectCounter++;
// if(bcryptCompareAsyncCorrectCounter == bcryptCompareTests) {
// console.timeEnd('bcrypt-compare-async-correct');
// }
// });
//}
/* Compare 2 */
//var hash = '$2a$10$5Gbvwh2x8XxWl7IWLVlHV.KgLSAhVnhOlNu/cA.1fjAsINvWRHUza';
//console.time('bcrypt2-compare-async-wrong');
//var bcrypt2CompareAsyncWrongCounter = 0;
//for(var i=1 ; i <= bcryptCompareTests ; i++) {
// bcrypt2.compare("B4c0/\/", hash, function(err, res) {
// bcrypt2CompareAsyncWrongCounter++;
// if(bcrypt2CompareAsyncWrongCounter == bcryptCompareTests) {
// console.timeEnd('bcrypt2-compare-async-wrong');
// }
// });
//}
//console.time('bcrypt2-compare-async-correct');
//var bcrypt2CompareAsyncCorrectCounter = 0;
//for(var i=1 ; i <= bcryptCompareTests ; i++) {
// bcrypt2.compare("bacon", hash, function(err, res) {
// bcrypt2CompareAsyncCorrectCounter++;
// if(bcrypt2CompareAsyncCorrectCounter == bcryptCompareTests) {
// console.timeEnd('bcrypt2-compare-async-correct');
// }
// });
//}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment