Skip to content

thiinbit/idgen4go

Repository files navigation

idgen4go

A fast, snowflake-alike ID generator for go.

Usage

Get

go get github.com/thiinbit/idgen4go

Use

import idg "github.com/thiinbit/idgen4go"

// Generate a new ID
id, _ := idg.Next() // 10361665786741541

// Get the ID generation time (int64 timestamp of millis)
idTimestamp := idg.ExtractTimestamp(id) // 1580307213634

fmt.Println(id, idTimestamp)

Speed

It takes about 1.560047465s to generate 4000000 (4 million) IDs. (use MacBookPro13,2018)
The test results are as follows:

Elapsed:  1.560343318s   
Elapsed:  1.546589782s   
Elapsed:  1.56980953s   
Elapsed:  1.575468796s   
Elapsed:  1.527984553s   
Elapsed:  1.56299164s   
Elapsed:  1.544387404s   
Elapsed:  1.56981767s   
Elapsed:  1.576140736s   
Elapsed:  1.566941228s   

The generated ID example:

11054270870716420   
11054270870716421   
11054270870716424   
11054270870716425   
11054270870716428   
11054270870716429   
11054270870716432   
11054270870716433   
11054270870716436   
11054270870716437   
11054270870716440   
11054270870716441   
11054270870716444   
11054270870716445   
11054270870716448   
11054270870716449   
11054270870716452   
11054270870716453   
11054270870716456   
11054270870716457   
11054270870716460   
11054270870716461   
11054270870716464   
11054270870716465   
11054270870716468   
11054270870716469   
11054270870716472   
11054270870716473   
11054270870716476   
11054270870716477   
11054270870716480   
11054270870716481   
11054270870716484   
11054270870716485   
11054270870716488   
11054270870716489   
11054270870716492   
11054270870716493   
11054270870716496   
11054270870716497   
11054270870716500   
11054270870716501   
11054270870716504   
11054270870716505   
11054270870716508   
11054270870716509   
11054270870716512   
11054270870716513   
11054270870716516   
11054270870716517   
11054270870716520   
11054270870716521   
11054270870716524   
11054270874910721   
11054270874910720   
11054270874910725   
11054270874910724   
11054270874910729   
11054270874910728   
11054270874910733   
11054270874910732   
11054270874910737   
11054270874910736   
11054270874910741   
11054270874910740   
11054270874910745   
11054270874910744   
11054270874910749   
11054270874910748   
11054270874910753   
11054270874910752   
11054270874910757   
11054270874910756   
11054270874910761   
11054270874910760   
11054270874910765   
11054270874910764   
11054270874910769   
11054270874910768   
11054270874910773   
11054270874910772   
11054270874910777   
11054270874910776   
11054270874910781   
11054270874910780   
11054270874910785   
11054270874910784   
11054270874910789   
11054270874910788   
11054270874910793   
11054270874910792   
11054270874910797   
11054270874910796   
11054270874910801   
11054270874910800   
11054270874910805   
11054270874910804   
11054270874910809   
11054270874910808   
11054270874910813