Skip to content

rustq/napi-nanoid

Repository files navigation

napi-nanoid

license npm downloads

The NAPI nanoid written in Rust

一款基于 Rust 实现的 NAPI nanoid

Install

$ npm i napi-nanoid

Usage

const { nanoid } = require('napi-nanoid')

nanoid() // => AeogKAGjUMX6mqB4sMzWe

Performance

nanoid compare

  js-nanoid:
    3 318 612 ops/s, ±1.10%

  napi-nanoid:
    5 141 154 ops/s, ±0.84%

  js-nanoid (non-secure):
    2 005 501 ops/s, ±0.15%

  napi-nanoid (non-secure):
    5 359 638 ops/s, ±0.13%

performance of all

shortid                      23,900 ops/sec
cuid                        102,473 ops/sec
secure-random-string        194,803 ops/sec
uuid                        839,287 ops/sec
js-nanoid (non-secure)    1,944,889 ops/sec
js-nanoid (secure)        3,323,263 ops/sec
napi-nanoid (secure)      4,862,067 ops/sec
napi-nanoid (non-secure)  5,007,932 ops/sec
crypto.randomUUID        10,658,212 ops/sec
hyperid                  14,534,342 ops/sec

Benchmark configuration: Linux x64 gnu, Intel(R) Xeon(R) Platinum 8370C CPU @ 2.80GHz, Node.js 16.20.0

(runs: 4905855849)

Support matrix

node14 node16 node18
Windows x64
Windows x32
Windows arm64
macOS x64
macOS arm64
Linux x64 gnu
Linux x64 musl
Linux arm gnu
Linux arm64 gnu
Linux arm64 musl
Android arm64
Android armv7
FreeBSD x64

Development

$ git clone https://github.com/rustq/napi-nanoid

$ cd napi-nanoid

$ yarn
$ yarn build

$ yarn test
$ yarn bench

License

MIT