Tests:
  • for

    AخA
     
    const nums = 65536;
    const random = new Uint8Array(nums);
    crypto.getRandomValues(random)
    const RG_CHARSET =
        '0123456789ABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvwxyz-._';
    let z = '';
    for(let i = 0; i < nums; i += 1) {
      z + RG_CHARSET[random[i] & RG_CHARSET.length]
    }
  • forEach

     
    const nums = 65536;
    const random = new Uint8Array(nums);
    crypto.getRandomValues(random)
    const RG_CHARSET =
        '0123456789ABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvwxyz-._';
    let t = '';
    random.forEach(randomNumber => t + RG_CHARSET[randomNumber & RG_CHARSET.length])
  • reduce

     
    const nums = 65536;
    const random = new Uint8Array(nums);
    crypto.getRandomValues(random)
    const RG_CHARSET =
        '0123456789ABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvwxyz-._';
    random.reduce(
        (randomString, randomNumber) =>
          randomString + RG_CHARSET[randomNumber % RG_CHARSET.length],
        ''
      );
  • map + join

     
    const nums = 65536;
    const random = new Uint8Array(nums);
    crypto.getRandomValues(random)
    const RG_CHARSET =
        '0123456789ABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvwxyz-._';
    random.map(randomNumber => RG_CHARSET[randomNumber & RG_CHARSET.length]).join('');
Rendered benchmark preparation results:

Suite status: <idle, ready to run>

Previous results

Experimental features:

  • Test case name Result
    for
    forEach
    reduce
    map + join

    Fastest: N/A

    Slowest: N/A

Latest run results:
Run details: (Test run date: 2 years ago)
Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36
Chrome 111 on Linux
View result in a separate tab
Test name Executions per second
for 1062.7 Ops/sec
forEach 481.9 Ops/sec
reduce 674.8 Ops/sec
map + join 299.0 Ops/sec