X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=benchmark-utils.js;h=e39708b7cf3cfe1cf18b92e25bd1994567f01e26;hb=a0e41b9ef100648a3a5023b1e419b48bb39eeabe;hp=35b47f9c456b1f9cfee33a445d8ddfc9f848adee;hpb=aa418e7875a766560efdb187c86052df0d1df250;p=benchmarks-js.git diff --git a/benchmark-utils.js b/benchmark-utils.js index 35b47f9..e39708b 100644 --- a/benchmark-utils.js +++ b/benchmark-utils.js @@ -9,6 +9,15 @@ function secureRandom () { return crypto.randomBytes(4).readUInt32LE() / 0x100000000 } +/** + * Generate a cryptographically secure random number in the [0,1[ range + * + * @returns + */ +function secureRandomWithRandomValues () { + return crypto.getRandomValues(new Uint32Array(1))[0] / 0x100000000 +} + /** * @param max * @param min @@ -61,6 +70,26 @@ function generateRandomNumberArray ( return array } +/** + * + * @param sizeMax + * @param numberMax + * @param numberGenerator + * @returns + */ +function generateRandomObject ( + sizeMax = 500, + numberMax = Number.MAX_VALUE, + numberGenerator = generateRandomFloat +) { + const size = generateRandomInteger(sizeMax) + const object = {} + for (let i = 0; i < size; i++) { + object[i.toString()] = numberGenerator(numberMax) + } + return object +} + /** * @param ms * @returns @@ -69,16 +98,12 @@ async function sleep (ms) { return new Promise(resolve => setTimeout(resolve, ms)) } -const LIST_FORMATTER = new Intl.ListFormat('en-US', { - style: 'long', - type: 'conjunction' -}) - module.exports = { generateRandomInteger, generateRandomFloat, generateRandomNumberArray, + generateRandomObject, sleep, secureRandom, - LIST_FORMATTER + secureRandomWithRandomValues }