Script Preparation code:
x
 
    function toBase62String1(value) {
        if (!value) {
            return value.toString();
        }
        const base = 62n;
        const digits = [
            "0", "1", "2", "3", "4", "5", "6", "7",
            "8", "9", "a", "b", "c", "d", "e", "f",
            "g", "h", "i", "j", "k", "l", "m", "n",
            "o", "p", "q", "r", "s", "t", "u", "v",
            "w", "x", "y", "z", "A", "B", "C", "D",
            "E", "F", "G", "H", "I", "J", "K", "L",
            "M", "N", "O", "P", "Q", "R", "S", "T",
            "U", "V", "W", "X", "Y", "Z"
        ];
        const remainders = [];
        const sign = value < 0n ? "-" : "";
        let quotient = sign ? 0n - value : value;
        do {
            remainders.unshift(digits[Number(quotient % base)]);
            quotient /= base;
        } while (quotient);
        return `${sign}${remainders.join("")}`;
    }
    function toBase62String2(value) {
        if (!value) {
            return value.toString();
        }
        const base = 62n;
        const digits = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
        const sign = value < 0n ? "-" : "";
        let quotient = sign ? 0n - value : value;
        let result = "";
        do {
            result = `${digits[Number(quotient % base)]}${result}`;
            quotient /= base;
        } while (quotient);
        return `${sign}${result}`;
    }
    function getRandomIdString1(steps = 4) {
        let seed = "";
        for (let i = 0; i < steps; i++) {
            seed += Math.random().toString().substring(2);
        }
        return toBase62String1(BigInt(seed));
    };
    function getRandomIdString2(steps = 4) {
        let seed = "";
        for (let i = 0; i < steps; i++) {
            seed += Math.random().toString().substring(2);
        }
        return toBase62String2(BigInt(seed));
    };
Tests:
  • Array Version

     
    getRandomIdString1()
  • String Version

     
    getRandomIdString2()
Rendered benchmark preparation results:

Suite status: <idle, ready to run>

Previous results

Experimental features:

  • Test case name Result
    Array Version
    String Version

    Fastest: N/A

    Slowest: N/A

Latest run results:
Run details: (Test run date: one year ago)
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36
Chrome 118 on Windows
View result in a separate tab
Test name Executions per second
Array Version 38835.8 Ops/sec
String Version 48588.9 Ops/sec