Skip to content

Latest commit

 

History

History
72 lines (59 loc) · 2.08 KB

README.md

File metadata and controls

72 lines (59 loc) · 2.08 KB

timer

for setDeadline and timeout sence ,but performance is better than TarsGo-rtimer.

Thanks a million to https://github.com/TarsCloud/TarsGo/tree/master/tars/util/rtimer

package main

import (
	"fmt"
	"time"
	"github.com/flyaways/timer"
)

func main() {
	t := timer.New(20, time.Second)
	defer t.Stop()

	done := make(chan struct{})
	go func() {
		//do something
		time.Sleep(time.Second)
		done <- struct{}{}
	}()

	select {
	case <-t.After(time.Second * 5):
		fmt.Println("after", time.Now().Format(time.RFC3339Nano))
	case <-done:
		fmt.Println("done", time.Now().Format(time.RFC3339Nano))
	}
}

Benchmark to FlyawaysTimer, TarsGoTimeWheel and OfficalTimer.

go 1.12
go test -count=1 -benchtime 5s -benchmem . -bench .
0.9948804265
goos: darwin
goarch: amd64
pkg: github.com/flyaways/timer
cpu: Intel(R) Core(TM) i5-7360U CPU @ 2.30GHz
BenchmarkFlyawaysTimer-4        174450506               53.58 ns/op            0 B/op          0 allocs/op
BenchmarkTarsGoTimer-4          79953462                74.30 ns/op            0 B/op          0 allocs/op
BenchmarkOfficalTimer-4         12491235               519.6 ns/op           201 B/op          3 allocs/op
BenchmarkRussellLuoTimer-4      13017769               514.1 ns/op           164 B/op          2 allocs/op
PASS
ok      github.com/flyaways/timer       43.342s
go version go1.21.5 darwin/amd64

go test -count=1 -benchtime 5s -benchmem . -bench .
0.9948381795
goos: darwin
goarch: amd64
pkg: github.com/flyaways/timer
cpu: Intel(R) Core(TM) i7-9750H CPU @ 2.60GHz
BenchmarkFlyawaysTimer-12       118467471               56.74 ns/op            0 B/op          0 allocs/op
BenchmarkTarsGoTimer-12         73546377                80.49 ns/op            0 B/op          0 allocs/op
BenchmarkOfficalTimer-12        47804100               166.6 ns/op           202 B/op          3 allocs/op
BenchmarkRussellLuoTimer-12     16388961               351.7 ns/op           123 B/op          2 allocs/op
PASS
ok      github.com/flyaways/timer       42.108s