Created
September 17, 2019 16:00
-
-
Save khursani8/e00b1c258fb21f3db8915cdeedc894e3 to your computer and use it in GitHub Desktop.
node performance test
This file contains hidden or 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
| let crypto = require('crypto'); | |
| const salt = 'lone-star', | |
| iterations = 10000, | |
| len = 16, | |
| digest = 'sha512'; | |
| const REPEATS = 10; | |
| const NUMBER_COUNT = 10000000; | |
| const CRYPTO_COUNT = 1000; | |
| const _add = function (n1, n2) { | |
| return n1 + n2; | |
| } | |
| function _hash(text) { | |
| crypto.pbkdf2Sync(text, salt, iterations, len, digest).toString('hex') | |
| } | |
| function one(text) { | |
| return _hash(text) | |
| } | |
| function double(text) { | |
| return one(text) | |
| } | |
| function triple(text) { | |
| return double(text) | |
| } | |
| a = 4; | |
| b = 5; | |
| const alternatives = [ | |
| { | |
| name: "No function call simple add loop "+NUMBER_COUNT, | |
| action: function (){ | |
| let c; | |
| for (let i = 0; i < NUMBER_COUNT; i++) { | |
| c = a + i; | |
| } | |
| } | |
| }, | |
| { | |
| name: "Function call simple add loop "+NUMBER_COUNT, | |
| action: function (){ | |
| let c; | |
| let add = _add; | |
| for (let i = 0; i < NUMBER_COUNT; i++) { | |
| c = add(a,i); | |
| } | |
| } | |
| }, | |
| { | |
| name: "No function call sha512 constant param loop "+CRYPTO_COUNT, | |
| action: function (){ | |
| let c; | |
| for (let i = 0; i < CRYPTO_COUNT; i++) { | |
| c = crypto.pbkdf2Sync("test", salt, iterations, len, digest).toString('hex'); | |
| } | |
| } | |
| }, | |
| { | |
| name: "Function call sha512 constant param loop "+CRYPTO_COUNT, | |
| action: function (){ | |
| let c; | |
| let hash = _hash; | |
| for (let i = 0; i < CRYPTO_COUNT; i++) { | |
| c = hash("test"); | |
| } | |
| } | |
| }, | |
| { | |
| name: "No function call sha512 random param loop "+CRYPTO_COUNT, | |
| action: function (){ | |
| let c; | |
| for (let i = 0; i < CRYPTO_COUNT; i++) { | |
| c = crypto.pbkdf2Sync(i+"", salt, iterations, len, digest).toString('hex'); | |
| } | |
| } | |
| }, | |
| { | |
| name: "Function call sha512 random param loop "+CRYPTO_COUNT, | |
| action: function (){ | |
| let c; | |
| let hash = _hash; | |
| for (let i = 0; i < CRYPTO_COUNT; i++) { | |
| c = hash(i+""); | |
| } | |
| } | |
| }, | |
| { | |
| name: "Nested Triple Function call sha512 random param loop "+CRYPTO_COUNT, | |
| action: function (){ | |
| let c; | |
| let hash = triple; | |
| for (let i = 0; i < CRYPTO_COUNT; i++) { | |
| c = hash(i+""); | |
| } | |
| } | |
| } | |
| ]; | |
| alternatives.forEach(function(alternative){ | |
| let start = new Date(); | |
| var repeat = REPEATS; | |
| for (var i=0; i< repeat;i++) { | |
| alternative.action(); | |
| } | |
| var end = new Date(); | |
| var totalMs = end.valueOf() - start.valueOf(); | |
| var averageMs = totalMs/repeat; | |
| var result = alternative.name + " took average " + averageMs + "ms - (" + repeat + " times, total time: " + totalMs + "ms)"; | |
| if (typeof console !== "undefined") { | |
| console.log(result); | |
| } | |
| if (typeof document !== "undefined"){ | |
| document.body.innerHTML += result + "<br>"; | |
| } | |
| }); | |
| // No function call simple add loop 10000000 took average 5.2ms - (10 times, total time: 52ms) | |
| // Function call simple add loop 10000000 took average 5.2ms - (10 times, total time: 52ms) | |
| // No function call sha512 constant param loop 1000 took average 8622.5ms - (10 times, total time: 86225ms) | |
| // Function call sha512 constant param loop 1000 took average 8716.3ms - (10 times, total time: 87163ms) | |
| // No function call sha512 random param loop 1000 took average 8829.1ms - (10 times, total time: 88291ms) | |
| // Function call sha512 random param loop 1000 took average 8903.6ms - (10 times, total time: 89036ms) | |
| // Nested Triple Function call sha512 random param loop 1000 took average 8949.5ms - (10 times, total time: 89495ms) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment