package timer_test import ( "fmt" "testing" "time" ) func TestTimer(t *testing.T) { ch := make(chan interface{}, 1) ch <- time.Now() for { select { case <-ch: fmt.Println(time.Now()) time.AfterFunc(1*time.Second, func() { ch <- time.Now() }) } } } func BenchmarkReset(b *testing.B) { tc := time.NewTimer(1 * time.Nanosecond) for i := 0; i < 1000000; i++ { select { case <-tc.C: tc.Reset(1 * time.Nanosecond) } } /* goos: darwin goarch: amd64 pkg: trial/timer cpu: Intel(R) Core(TM) i7-4770HQ CPU @ 2.20GHz BenchmarkReset-8 1 1082548694 ns/op */ } func BenchmarkNewTimer(b *testing.B) { tc := time.NewTimer(1 * time.Nanosecond) for i := 0; i < 1000000; i++ { select { case <-tc.C: tc = time.NewTimer(1 * time.Nanosecond) } } /* goos: darwin goarch: amd64 pkg: trial/timer cpu: Intel(R) Core(TM) i7-4770HQ CPU @ 2.20GHz BenchmarkNewTimer-8 1 1570331115 ns/op */ } func BenchmarkStop(b *testing.B) { tc := time.NewTimer(1 * time.Nanosecond) for i := 0; i < 1000000; i++ { tc.Stop() tc.Reset(1 * time.Nanosecond) } tc.Stop() /* goos: darwin goarch: amd64 pkg: trial/timer cpu: Intel(R) Core(TM) i7-4770HQ CPU @ 2.20GHz BenchmarkStop-8 1000000000 0.1683 ns/op */ } func BenchmarkReset1(b *testing.B) { tc := time.NewTimer(1 * time.Nanosecond) for i := 0; i < 1000000; i++ { tc = time.NewTimer(1 * time.Nanosecond) } /* goos: darwin goarch: amd64 pkg: trial/timer cpu: Intel(R) Core(TM) i7-4770HQ CPU @ 2.20GHz BenchmarkReset1-8 1000000000 0.5614 ns/op */ tc.Stop() }