Naive string id generators

Benchmark created on


Setup

let naiveClientIdCounter = 0;
let prefix = '';

function naiveClientId_prefix_decimals() {
  if (naiveClientIdCounter >= Number.MAX_SAFE_INTEGER) {
    prefix = prefix === '' ? '0' : `${parseInt(prefix, 10) + 1}`;
    naiveClientIdCounter = 0;
  }
  return prefix + `${naiveClientIdCounter++}`;
}

function naiveClientId_prefix_hex() {
  const base = 16;
  if (naiveClientIdCounter >= Number.MAX_SAFE_INTEGER) {
    prefix = prefix === '' ? '0' : `${(parseInt(prefix, base) + 1).toString(base)}`;
    naiveClientIdCounter = 0;
  }
  return prefix + (naiveClientIdCounter++).toString(base);
}

function naiveClientId_prefix_b36() {
  const base = 36;
  if (naiveClientIdCounter >= Number.MAX_SAFE_INTEGER) {
    prefix = prefix === '' ? '0' : `${(parseInt(prefix, base) + 1).toString(base)}`;
    naiveClientIdCounter = 0;
  }
  return prefix + (naiveClientIdCounter++).toString(base);
}

function naiveClientId_decimals() {
  return naiveClientIdCounter++;
}

function naiveClientId_hex() {
  return (naiveClientIdCounter++).toString(16);
}

function naiveClientId_b36() {
  return (naiveClientIdCounter++).toString(36);
}

Teardown

naiveClientIdCounter = 0;
prefix = '';

Test runner

Ready to run.

Testing in
TestOps/sec
string ID in decimals + prefix
naiveClientId_prefix_decimals();
ready
string ID in hex format + prefix
naiveClientId_prefix_hex();
ready
string ID in decimals without prefix
naiveClientId_decimals();
ready
string ID in hex without prefix
naiveClientId_hex();
ready
string ID in b36 without prefix
naiveClientId_b36();
ready
string ID in b36 with prefix
naiveClientId_prefix_b36();
ready

Revisions

You can edit these tests or add more tests to this page by appending /edit to the URL.