Script Preparation code:
x
 
        function genHexString1(len) {
            return Array.from(crypto.getRandomValues(new Uint8Array(len / 2 ))).map(b => b.toString(16).padStart(2, '0')).join('');
        }
        function genHexString2(len) {
            const hex = '0123456789abcdef';
            let output = '';
            for (let i = 0; i < len; ++i) {
                output += hex.charAt(Math.floor(Math.random() * hex.length));
            }
            return output;
        }
        function genHexString3(len) {
            let arr = new Uint8Array((len / 2));
            window.crypto.getRandomValues(arr);
            return Array.from(arr, dec => ('0' + dec.toString(16)).substr(-2)).join('');
        }
        function genHexString4(len) {
            const hexChars = '0123456789abcdef';
            return [...Array(len)].map(() => hexChars[Math.floor(Math.random() * 16)]).join('');
        }
        function genHexString5(len) {
            let arr = new Uint8Array(len / 2);
            crypto.getRandomValues(arr);
            return btoa(String.fromCharCode.apply(null, arr)).replace(/[^a-f0-9]/g, '').substr(0, len);
        }
Tests:
  • genHexString1

     
    const hex = genHexString1(20)
  • genHexString2

     
    const hex = genHexString2(20)
  • genHexString3

     
    const hex = genHexString3(20)
  • genHexString4

     
    const hex = genHexString4(20)
  • genHexString5

     
    const hex = genHexString5(20)
Rendered benchmark preparation results:

Suite status: <idle, ready to run>

Previous results

Experimental features:

  • Test case name Result
    genHexString1
    genHexString2
    genHexString3
    genHexString4
    genHexString5

    Fastest: N/A

    Slowest: N/A

Latest run results:
Run details: (Test run date: one year ago)
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36
Chrome 113 on Mac OS X 10.15.7
View result in a separate tab
Test name Executions per second
genHexString1 503242.8 Ops/sec
genHexString2 354289.7 Ops/sec
genHexString3 458107.3 Ops/sec
genHexString4 290037.8 Ops/sec
genHexString5 460392.0 Ops/sec