Skip to content

rekby/fastuuid

Repository files navigation

PkgGoDev Go Report Card codecov

Fast uuid library, now implemented only UUIDv4 (crypto-random) generators. It generate UUID to string about 50-100ns with one allocation and good paralellism by cpu.

Command for install:

go get github.com/rekby/fastuuid

Example:

package main

import "github.com/rekby/fastuuid"

func main(){
	fmt.Println(fastuuid.MustUUIDv4String())
}

For run benchmarks:

git clone https://github.com/rekby/fastuuid.git
cd fastuuid/benchmarks
go test -test.bench=. -v

Result for macbook pro M1:

goos: darwin
goarch: arm64
pkg: github.com/rekby/fastuuid/benchmarks
BenchmarkRekbyUUID/one-thread                                        13688407               85.92 ns/op            48 B/op          1 allocs/op
BenchmarkRekbyUUID/multi-thread                                      25657815               51.81 ns/op            47 B/op          0 allocs/op
BenchmarkGoogleUUID4/one-thread                                       2256043               530.5 ns/op            64 B/op          2 allocs/op
BenchmarkGoogleUUID4/multi-thread                                     1897683               634.9 ns/op            63 B/op          1 allocs/op
BenchmarkSatoriUUID4/one-thread                                       2277092               531.1 ns/op            64 B/op          2 allocs/op
BenchmarkSatoriUUID4/multi-thread                                     1950952               624.3 ns/op            62 B/op          1 allocs/op
BenchmarkGofrs/one-thread                                             2265781               530.3 ns/op            64 B/op          2 allocs/op
BenchmarkGofrs/multi-thread                                           1912966               635.9 ns/op            63 B/op          1 allocs/op
BenchmarkRogpeppeUnsecuredBecauseItCounter/one-thread                28806307               40.35 ns/op            48 B/op          1 allocs/op
BenchmarkRogpeppeUnsecuredBecauseItCounter/multi-thread               7198768               168.0 ns/op            47 B/op          0 allocs/op
BenchmarkJakehl/one-thread                                            1956322               611.8 ns/op           144 B/op          5 allocs/op
BenchmarkJakehl/multi-thread                                          1963675               643.4 ns/op           142 B/op          4 allocs/op
BenchmarkRwxrob/one-thread                                            1620858               740.5 ns/op           184 B/op          7 allocs/op
BenchmarkRwxrob/multi-thread                                          1870315               644.6 ns/op           182 B/op          6 allocs/op