X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=benchmark-utils.mjs;h=d0d5a62291527bc12387e18188991e83e307670a;hb=HEAD;hp=692ec806f4e1406c4bc964062489340210fd0588;hpb=95d31631e49a5a39e261745c31f526691dab5f81;p=benchmarks-js.git diff --git a/benchmark-utils.mjs b/benchmark-utils.mjs index 692ec80..8e32f90 100644 --- a/benchmark-utils.mjs +++ b/benchmark-utils.mjs @@ -1,36 +1,19 @@ -import crypto from 'crypto' +import { getRandomValues, randomBytes, randomInt } from 'node:crypto' /** * Generate a cryptographically secure random number in the [0,1[ range * @returns */ -function secureRandom () { - return crypto.randomBytes(4).readUInt32LE() / 0x100000000 +export function secureRandom () { + return 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 + * Generate a cryptographically secure random number in the [0,1[ range * @returns */ -function generateRandomInteger (max = Number.MAX_SAFE_INTEGER, min = 0) { - if (max < min || max < 0 || min < 0) { - throw new RangeError('Invalid interval') - } - max = Math.floor(max) - if (min != null && min !== 0) { - min = Math.ceil(min) - return Math.floor(secureRandom() * (max - min + 1)) + min - } - return Math.floor(secureRandom() * (max + 1)) +export function secureRandomWithRandomValues () { + return getRandomValues(new Uint32Array(1))[0] / 0x100000000 } /** @@ -39,14 +22,14 @@ function generateRandomInteger (max = Number.MAX_SAFE_INTEGER, min = 0) { * @param min * @returns */ -function generateRandomFloat (max = Number.MAX_VALUE, min = 0) { +export function generateRandomFloat (max = Number.MAX_VALUE, min = 0) { if (max < min) { throw new RangeError('Invalid interval') } - if (max - min === Infinity) { + if (max - min === Number.POSITIVE_INFINITY) { throw new RangeError('Invalid interval') } - return (crypto.randomBytes(4).readUInt32LE() / 0xffffffff) * (max - min) + min + return (randomBytes(4).readUInt32LE() / 0xffffffff) * (max - min) + min } /** @@ -56,7 +39,7 @@ function generateRandomFloat (max = Number.MAX_VALUE, min = 0) { * @param numberGenerator * @returns */ -function generateRandomNumberArray ( +export function generateRandomNumberArray ( size, max = Number.MAX_VALUE, numberGenerator = generateRandomFloat @@ -75,12 +58,12 @@ function generateRandomNumberArray ( * @param numberGenerator * @returns */ -function generateRandomObject ( +export function generateRandomObject ( sizeMax = 500, numberMax = Number.MAX_VALUE, numberGenerator = generateRandomFloat ) { - const size = generateRandomInteger(sizeMax) + const size = randomInt(sizeMax) const object = {} for (let i = 0; i < size; i++) { object[i.toString()] = numberGenerator(numberMax) @@ -92,16 +75,6 @@ function generateRandomObject ( * @param ms * @returns */ -async function sleep (ms) { - return new Promise(resolve => setTimeout(resolve, ms)) -} - -export { - generateRandomInteger, - generateRandomFloat, - generateRandomNumberArray, - generateRandomObject, - sleep, - secureRandom, - secureRandomWithRandomValues +export async function sleep (ms) { + return await new Promise(resolve => setTimeout(resolve, ms)) }