Last active
February 9, 2017 18:09
-
-
Save ryanwarsaw/1ecdefb68d9a9bbff47ddf21f025b40b to your computer and use it in GitHub Desktop.
Comparison of bcrypt.js performance on i7 4960HQ vs Heroku hardware 🤔
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
~ $ npm test | |
> [email protected] test /app | |
> node node_modules/testjs/bin/testjs | |
|_ _ _|_ | |
|_(-_)|_ test.js v1.0.4 | |
+ bcryptjs.encodeBase64 0.866 ms 1 assertions | |
+ bcryptjs.decodeBase64 3.339 ms 1 assertions | |
+ bcryptjs.genSaltSync 0.608 ms 3 assertions | |
+ bcryptjs.genSalt 0.674 ms 3 assertions | |
+ bcryptjs.hashSync 421.399 ms 2 assertions | |
+ bcryptjs.hash 114.708 ms 2 assertions | |
+ bcryptjs.compareSync 1329.529 ms 12 assertions | |
+ bcryptjs.compare 670.718 ms 8 assertions | |
+ bcryptjs.getSalt 224.157 ms 1 assertions | |
+ bcryptjs.getRounds 111.089 ms 1 assertions | |
+ bcryptjs.progress 441.625 ms 6 assertions | |
+ bcryptjs.promise 226.028 ms 3 assertions | |
+ bcryptjs.compat.quickbrown 189.902 ms 1 assertions | |
+ bcryptjs.compat.roundsOOB 0.612 ms 6 assertions | |
test OK 14 tests (3742.969 ms, 50 assertions) | |
~ $ |
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
~ $ node tests/bench | |
bcrypt.js maximum input length is: 72 | |
## Comparing bcryptjs with bcrypt | |
#### Using 8 rounds | |
Salt: `$2a$08$BzZyYtTRd31wSoOshhPvbe` | |
* **bcrypt** sync: 21.049ms | |
`$2a$08$BzZyYtTRd31wSoOshhPvbeZWq3cGvXGwCLNxbtkRs5d4Z6s0jwyUa` | |
* **bcrypt.js** sync: 33.847ms | |
`$2a$08$BzZyYtTRd31wSoOshhPvbeZWq3cGvXGwCLNxbtkRs5d4Z6s0jwyUa` | |
* **bcrypt** async: 20.926ms | |
`$2a$08$BzZyYtTRd31wSoOshhPvbeZWq3cGvXGwCLNxbtkRs5d4Z6s0jwyUa` | |
* **bcrypt.js** async: 37.189ms | |
`$2a$08$BzZyYtTRd31wSoOshhPvbeZWq3cGvXGwCLNxbtkRs5d4Z6s0jwyUa` | |
#### Using 9 rounds | |
Salt: `$2a$09$FHGVRlHNlC.RXViMBFXNsu` | |
* **bcrypt** sync: 41.610ms | |
`$2a$09$FHGVRlHNlC.RXViMBFXNsueqA7qCo9Q9ddx2FSScatM0.PTxlhUDy` | |
* **bcrypt.js** sync: 56.918ms | |
`$2a$09$FHGVRlHNlC.RXViMBFXNsueqA7qCo9Q9ddx2FSScatM0.PTxlhUDy` | |
* **bcrypt** async: 38.873ms | |
`$2a$09$FHGVRlHNlC.RXViMBFXNsueqA7qCo9Q9ddx2FSScatM0.PTxlhUDy` | |
* **bcrypt.js** async: 63.882ms | |
`$2a$09$FHGVRlHNlC.RXViMBFXNsueqA7qCo9Q9ddx2FSScatM0.PTxlhUDy` | |
#### Using 10 rounds | |
Salt: `$2a$10$BTpVIDlYuKaV8ncZNho.qu` | |
* **bcrypt** sync: 78.517ms | |
`$2a$10$BTpVIDlYuKaV8ncZNho.qu98BVAiXLPhlwxRpXnYUwKwwi6rVVUym` | |
* **bcrypt.js** sync: 115.701ms | |
`$2a$10$BTpVIDlYuKaV8ncZNho.qu98BVAiXLPhlwxRpXnYUwKwwi6rVVUym` | |
* **bcrypt** async: 77.517ms | |
`$2a$10$BTpVIDlYuKaV8ncZNho.qu98BVAiXLPhlwxRpXnYUwKwwi6rVVUym` | |
* **bcrypt.js** async: 116.572ms | |
`$2a$10$BTpVIDlYuKaV8ncZNho.qu98BVAiXLPhlwxRpXnYUwKwwi6rVVUym` | |
#### Using 11 rounds | |
Salt: `$2a$11$dJxd/m2pGszJozLqjHsFAe` | |
* **bcrypt** sync: 177.466ms | |
`$2a$11$dJxd/m2pGszJozLqjHsFAefglwm.FqcPRD9m/QH1XAPkBQlbpTAh.` | |
* **bcrypt.js** sync: 278.313ms | |
`$2a$11$dJxd/m2pGszJozLqjHsFAefglwm.FqcPRD9m/QH1XAPkBQlbpTAh.` | |
* **bcrypt** async: 155.523ms | |
`$2a$11$dJxd/m2pGszJozLqjHsFAefglwm.FqcPRD9m/QH1XAPkBQlbpTAh.` | |
* **bcrypt.js** async: 227.835ms | |
`$2a$11$dJxd/m2pGszJozLqjHsFAefglwm.FqcPRD9m/QH1XAPkBQlbpTAh.` | |
#### Using 12 rounds | |
Salt: `$2a$12$UCn2FcSe3OJItVXKyM8hQe` | |
* **bcrypt** sync: 318.310ms | |
`$2a$12$UCn2FcSe3OJItVXKyM8hQeFt.lZ5Ilx7UjsHgpXVO9SnpX45orF2W` | |
* **bcrypt.js** sync: 467.182ms | |
`$2a$12$UCn2FcSe3OJItVXKyM8hQeFt.lZ5Ilx7UjsHgpXVO9SnpX45orF2W` | |
* **bcrypt** async: 311.926ms | |
`$2a$12$UCn2FcSe3OJItVXKyM8hQeFt.lZ5Ilx7UjsHgpXVO9SnpX45orF2W` | |
* **bcrypt.js** async: 490.588ms | |
`$2a$12$UCn2FcSe3OJItVXKyM8hQeFt.lZ5Ilx7UjsHgpXVO9SnpX45orF2W` | |
#### Using 13 rounds | |
Salt: `$2a$13$g3P2tneGDFsqXm0DxwAbeO` | |
* **bcrypt** sync: 653.669ms | |
`$2a$13$g3P2tneGDFsqXm0DxwAbeOtrtdR8QX/3cA3VAMdsPw/mQgBpHKbfq` | |
* **bcrypt.js** sync: 987.713ms | |
`$2a$13$g3P2tneGDFsqXm0DxwAbeOtrtdR8QX/3cA3VAMdsPw/mQgBpHKbfq` | |
* **bcrypt** async: 621.518ms | |
`$2a$13$g3P2tneGDFsqXm0DxwAbeOtrtdR8QX/3cA3VAMdsPw/mQgBpHKbfq` | |
* **bcrypt.js** async: 978.093ms | |
`$2a$13$g3P2tneGDFsqXm0DxwAbeOtrtdR8QX/3cA3VAMdsPw/mQgBpHKbfq` | |
#### Using 14 rounds | |
Salt: `$2a$14$Uwe8y271bbfB3oL3gZxM9O` | |
* **bcrypt** sync: 1329.344ms | |
`$2a$14$Uwe8y271bbfB3oL3gZxM9OPMHhXVzqaoUccvuHx7HXj0zH3.SbYXi` | |
* **bcrypt.js** sync: 1923.914ms | |
`$2a$14$Uwe8y271bbfB3oL3gZxM9OPMHhXVzqaoUccvuHx7HXj0zH3.SbYXi` | |
* **bcrypt** async: 1252.934ms | |
`$2a$14$Uwe8y271bbfB3oL3gZxM9OPMHhXVzqaoUccvuHx7HXj0zH3.SbYXi` | |
* **bcrypt.js** async: 1797.935ms | |
`$2a$14$Uwe8y271bbfB3oL3gZxM9OPMHhXVzqaoUccvuHx7HXj0zH3.SbYXi` | |
#### Using 15 rounds | |
Salt: `$2a$15$/Ww7F5W2t/tWjyUiXgxnXe` | |
* **bcrypt** sync: 2584.945ms | |
`$2a$15$/Ww7F5W2t/tWjyUiXgxnXe6phBrw275v0bgJAm7IOJ7d5OMoJM3wO` | |
* **bcrypt.js** sync: 3635.123ms | |
`$2a$15$/Ww7F5W2t/tWjyUiXgxnXe6phBrw275v0bgJAm7IOJ7d5OMoJM3wO` | |
* **bcrypt** async: 2558.177ms | |
`$2a$15$/Ww7F5W2t/tWjyUiXgxnXe6phBrw275v0bgJAm7IOJ7d5OMoJM3wO` | |
* **bcrypt.js** async: 3606.093ms | |
`$2a$15$/Ww7F5W2t/tWjyUiXgxnXe6phBrw275v0bgJAm7IOJ7d5OMoJM3wO` |
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
Ryans-MacBook-Pro:bcrypt.js ryanwarsaw$ npm test | |
> [email protected] test /Users/ryanwarsaw/Development/JavaScript/bcrypt.js | |
> node node_modules/testjs/bin/testjs | |
|_ _ _|_ | |
|_(-_)|_ test.js v1.0.4 | |
+ bcryptjs.encodeBase64 0.451 ms 1 assertions | |
+ bcryptjs.decodeBase64 1.110 ms 1 assertions | |
+ bcryptjs.genSaltSync 0.215 ms 3 assertions | |
+ bcryptjs.genSalt 0.271 ms 3 assertions | |
+ bcryptjs.hashSync 254.079 ms 2 assertions | |
+ bcryptjs.hash 81.552 ms 2 assertions | |
+ bcryptjs.compareSync 968.597 ms 12 assertions | |
+ bcryptjs.compare 495.584 ms 8 assertions | |
+ bcryptjs.getSalt 163.371 ms 1 assertions | |
+ bcryptjs.getRounds 81.340 ms 1 assertions | |
+ bcryptjs.progress 319.050 ms 6 assertions | |
+ bcryptjs.promise 165.267 ms 3 assertions | |
+ bcryptjs.compat.quickbrown 146.806 ms 1 assertions | |
+ bcryptjs.compat.roundsOOB 0.669 ms 6 assertions | |
test OK 14 tests (2681.935 ms, 50 assertions) | |
Ryans-MacBook-Pro:bcrypt.js ryanwarsaw$ |
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
bcrypt.js maximum input length is: 72 | |
## Comparing bcryptjs with bcrypt | |
#### Using 8 rounds | |
Salt: `$2a$08$tIdhWWCHHNS4Vhw4nLAkh.` | |
* **bcrypt** sync: 16.413ms | |
`$2a$08$tIdhWWCHHNS4Vhw4nLAkh.n90Cw8MEQXVjvfeoJcpAgcN00cwkdtC` | |
* **bcrypt.js** sync: 19.919ms | |
`$2a$08$tIdhWWCHHNS4Vhw4nLAkh.n90Cw8MEQXVjvfeoJcpAgcN00cwkdtC` | |
* **bcrypt** async: 21.770ms | |
`$2a$08$tIdhWWCHHNS4Vhw4nLAkh.n90Cw8MEQXVjvfeoJcpAgcN00cwkdtC` | |
* **bcrypt.js** async: 21.527ms | |
`$2a$08$tIdhWWCHHNS4Vhw4nLAkh.n90Cw8MEQXVjvfeoJcpAgcN00cwkdtC` | |
#### Using 9 rounds | |
Salt: `$2a$09$C2HtIGHtD80NKlysTc5C5.` | |
* **bcrypt** sync: 33.443ms | |
`$2a$09$C2HtIGHtD80NKlysTc5C5.JmAmuec84OTvbkQo/9U1fq4bl4skrqC` | |
* **bcrypt.js** sync: 41.419ms | |
`$2a$09$C2HtIGHtD80NKlysTc5C5.JmAmuec84OTvbkQo/9U1fq4bl4skrqC` | |
* **bcrypt** async: 33.932ms | |
`$2a$09$C2HtIGHtD80NKlysTc5C5.JmAmuec84OTvbkQo/9U1fq4bl4skrqC` | |
* **bcrypt.js** async: 41.438ms | |
`$2a$09$C2HtIGHtD80NKlysTc5C5.JmAmuec84OTvbkQo/9U1fq4bl4skrqC` | |
#### Using 10 rounds | |
Salt: `$2a$10$pAqYjdQYytRyB5BSI6zuY.` | |
* **bcrypt** sync: 67.315ms | |
`$2a$10$pAqYjdQYytRyB5BSI6zuY.A18rftYwu92qoLvDqmbJth2JYJoEyOS` | |
* **bcrypt.js** sync: 81.625ms | |
`$2a$10$pAqYjdQYytRyB5BSI6zuY.A18rftYwu92qoLvDqmbJth2JYJoEyOS` | |
* **bcrypt** async: 67.469ms | |
`$2a$10$pAqYjdQYytRyB5BSI6zuY.A18rftYwu92qoLvDqmbJth2JYJoEyOS` | |
* **bcrypt.js** async: 87.125ms | |
`$2a$10$pAqYjdQYytRyB5BSI6zuY.A18rftYwu92qoLvDqmbJth2JYJoEyOS` | |
#### Using 11 rounds | |
Salt: `$2a$11$7S6jV3dJt7JHA04jQJsIiu` | |
* **bcrypt** sync: 137.128ms | |
`$2a$11$7S6jV3dJt7JHA04jQJsIiuXEFcxI4ya9/d1In.6y0F07ZSDIVHBnC` | |
* **bcrypt.js** sync: 162.033ms | |
`$2a$11$7S6jV3dJt7JHA04jQJsIiuXEFcxI4ya9/d1In.6y0F07ZSDIVHBnC` | |
* **bcrypt** async: 129.830ms | |
`$2a$11$7S6jV3dJt7JHA04jQJsIiuXEFcxI4ya9/d1In.6y0F07ZSDIVHBnC` | |
* **bcrypt.js** async: 166.848ms | |
`$2a$11$7S6jV3dJt7JHA04jQJsIiuXEFcxI4ya9/d1In.6y0F07ZSDIVHBnC` | |
#### Using 12 rounds | |
Salt: `$2a$12$Pkh427sr4pGXHVAHiHA8nu` | |
* **bcrypt** sync: 264.059ms | |
`$2a$12$Pkh427sr4pGXHVAHiHA8nucoc9.qToQBumGz65doVljN8rKatUAPC` | |
* **bcrypt.js** sync: 320.189ms | |
`$2a$12$Pkh427sr4pGXHVAHiHA8nucoc9.qToQBumGz65doVljN8rKatUAPC` | |
* **bcrypt** async: 263.666ms | |
`$2a$12$Pkh427sr4pGXHVAHiHA8nucoc9.qToQBumGz65doVljN8rKatUAPC` | |
* **bcrypt.js** async: 321.545ms | |
`$2a$12$Pkh427sr4pGXHVAHiHA8nucoc9.qToQBumGz65doVljN8rKatUAPC` | |
#### Using 13 rounds | |
Salt: `$2a$13$c3gCt1I2pvidpxxAyCVlB.` | |
* **bcrypt** sync: 545.440ms | |
`$2a$13$c3gCt1I2pvidpxxAyCVlB.THE046NpRSfa8rgK4oWXosy2ZLUzpvy` | |
* **bcrypt.js** sync: 657.998ms | |
`$2a$13$c3gCt1I2pvidpxxAyCVlB.THE046NpRSfa8rgK4oWXosy2ZLUzpvy` | |
* **bcrypt** async: 516.360ms | |
`$2a$13$c3gCt1I2pvidpxxAyCVlB.THE046NpRSfa8rgK4oWXosy2ZLUzpvy` | |
* **bcrypt.js** async: 639.311ms | |
`$2a$13$c3gCt1I2pvidpxxAyCVlB.THE046NpRSfa8rgK4oWXosy2ZLUzpvy` | |
#### Using 14 rounds | |
Salt: `$2a$14$AyXxw1NVVubrCNl.HJFeEe` | |
* **bcrypt** sync: 1038.704ms | |
`$2a$14$AyXxw1NVVubrCNl.HJFeEep/Typ0MXde2Isuo7bnRm9RQLP0px5su` | |
* **bcrypt.js** sync: 1279.357ms | |
`$2a$14$AyXxw1NVVubrCNl.HJFeEep/Typ0MXde2Isuo7bnRm9RQLP0px5su` | |
* **bcrypt** async: 1041.455ms | |
`$2a$14$AyXxw1NVVubrCNl.HJFeEep/Typ0MXde2Isuo7bnRm9RQLP0px5su` | |
* **bcrypt.js** async: 1277.026ms | |
`$2a$14$AyXxw1NVVubrCNl.HJFeEep/Typ0MXde2Isuo7bnRm9RQLP0px5su` | |
#### Using 15 rounds | |
Salt: `$2a$15$6iQAM.kGz5bUQq9zQuUwyO` | |
* **bcrypt** sync: 2073.580ms | |
`$2a$15$6iQAM.kGz5bUQq9zQuUwyOdJN0YzEX2JK5s6heHygps0PRQapH6EW` | |
* **bcrypt.js** sync: 2546.767ms | |
`$2a$15$6iQAM.kGz5bUQq9zQuUwyOdJN0YzEX2JK5s6heHygps0PRQapH6EW` | |
* **bcrypt** async: 2069.854ms | |
`$2a$15$6iQAM.kGz5bUQq9zQuUwyOdJN0YzEX2JK5s6heHygps0PRQapH6EW` | |
* **bcrypt.js** async: 2540.838ms | |
`$2a$15$6iQAM.kGz5bUQq9zQuUwyOdJN0YzEX2JK5s6heHygps0PRQapH6EW` |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment