|
- package main
-
- import (
- "fmt"
- "time"
-
- "github.com/yitter/idgenerator-go/idgen"
- )
-
- func SetOptions(workerId uint16) {
- var options = idgen.NewIdGeneratorOptions(workerId)
- idgen.SetIdGenerator(options)
- }
-
- func NextId() int64 {
- return idgen.NextId()
- }
-
- func main() {
- // 自定义参数
- var options = idgen.NewIdGeneratorOptions(1)
- options.WorkerIdBitLength = 6
- options.SeqBitLength = 10
- options.BaseTime = time.Date(2020, 2, 20, 2, 20, 2, 20, time.UTC).UnixNano() / 1e6
- idgen.SetIdGenerator(options)
-
- var genCount = 500000
- for j := 0; j < 100000; j++ {
- for {
- var begin = time.Now().UnixNano() / 1e6
- for i := 0; i < genCount; i++ {
- // 生成ID
- idgen.NextId()
- // fmt.Println(id)
- }
- var end = time.Now().UnixNano() / 1e6
-
- fmt.Println("耗时:", (end - begin), "ms")
- time.Sleep(time.Duration(1000) * time.Millisecond)
- }
- }
- }
-
- // To Build a dll/so:
-
- // windows:
- // go build -o ./target/yitidgengo.dll -buildmode=c-shared main.go
-
- // linux init: go install -buildmode=shared -linkshared std
- // go build -o ./target/yitidgengo.so -buildmode=c-shared main.go
-
- // https://books.studygolang.com/advanced-go-programming-book/ch2-cgo/ch2-09-static-shared-lib.html
|