alixaxel / uuid-random

Fastest UUID with good RNG for JS

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

uuid-random

Generate RFC-4122 compliant random UUIDs with better statistical dispersion than Math.random().

Install

npm install uuid-random

Features

  • 0.3k minified + gzipped
  • Uses better RNG when possible
  • Works in browser or node with zero external dependencies
  • Very fast!

Performance

This is the fastest pure javascript UUID v4 generator I have found, over 5x faster than comparable libraries. After inspecting and/or testing every JS UUID package I could find (there are a ton), these were the fastest:

npm package performance
node-uuid 370k ops/sec
portable-uuid 260k ops/sec
uuid 370k ops/sec
uuid-random 2M ops/sec

What is UUID v4?

Universally Unique IDentifiers transcend many constraints of traditional incremental integer IDs, especially in distributed systems. With version 4, we (essentially) generate a random 128-bit value.

We do sacrifice guaranteed uniqueness for extremely probable uniqueness (you would need to do-loop uuid() at max speed for 73,067 years for a 50% chance of one collision). But for that slight cost, we may now generate valid, unique, persistent IDs on any node of a distributed system (e.g. intermittently offline or high-latency clients).

Example Usage

Babel

import uuid from 'uuid-random';
uuid(); // 'f32dc9ae-7ca8-44ca-8f25-f258f7331c55'

Node

var uuid = require('uuid-random');
uuid(); // '0b99b82f-62cf-4275-88b3-de039020f14e'

Browser

<script src="uuid-random.min.js"></script>
<script>
  uuid(); // 'b96ab5e6-f1e8-4653-ab08-4dd82ea65778'
</script>

Is UUID?

uuid.test('0b99b82f-62cf-4275-88b3-de039020f14e'); // true

Rationale

Random (v4) UUIDs are often better than clock-based (v1), but Math.random() sucks for uuid generation.

After digging through npm I settled on using node-uuid to take advantage of better RNG when possible. It's a great lib, but seemed too large and featured after using that neat oneliner-ish solution. So, I combined ideas from the better implementations and researched a much faster, more focused and compact uuid generator that used the best RNG available.

This library does one thing very well: generate UUID version 4.

License

MIT

About

Fastest UUID with good RNG for JS

License:MIT License


Languages

Language:JavaScript 97.2%Language:HTML 2.8%