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