Skip to content

alizeait/uuid

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

89 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

@alizeait/uuid Check Coverage

A tiny (~260B) and super fast RFC4122 compliant v4 UUID generator.

Supports both Nodejs and Browser environments while using native cryptography features.

Includes ESM and Commonjs/Nodejs bundles. Allows bundlers like Webpack and Rollup to pick the correct bundle for different environments.

Check out the playground

Installation

$ npm install @alizeait/uuid

Usage

import { v4 } from "@alizeait/uuid";

v4(); //  'dc8c63d6-55e0-49be-9d68-19b0e51be2a6'
v4(); //  'e3f68a1e-d22b-4c94-bc6b-78b44c1608f3'

Benchmarks

uuid/v4               x 1,006,107 ops/sec ยฑ1.04% (82 runs sampled)
@alizeait/uuid        x 4,262,898 ops/sec ยฑ0.98% (87 runs sampled)
nanoid                x 1,779,066 ops/sec ยฑ1.58% (91 runs sampled)


RFC UUID v4 validation:

uuid/v4               โœ”
@alizeait/uuid        โœ”
nanoid                โœ˜

Running on Node.js v12.13.0, 64-bit OS, Intel(R) Core(TM) i5-6600K CPU @ 3.50GHz, 16.0 GB RAM

Why is @alizeait/uuid so fast?

It first fills a large(6144 bytes) Uint8Array typed array buffer with cryptographically strong random values using the browser/nodejs crypto API(Meaning that it fills an array buffer randomly with numbers between 0 and 255). It then generates an array of 2 digit hexadecimal numbers(length=256) and starts slicing off chunks from the buffer as needed, meaning that each buffer is able to supply 384 v4 UUID random invocations. When the buffer is all used up, it generates a new one with the crypto APIs and iterates.

This caching mechanism allows for faster composition and generation of the uuids.

About

๐Ÿ” A super fast and tiny (~260B) v4 UUID generator

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •