timer_test.go 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. package timer_test
  2. import (
  3. "fmt"
  4. "testing"
  5. "time"
  6. )
  7. func TestTimer(t *testing.T) {
  8. ch := make(chan interface{}, 1)
  9. ch <- time.Now()
  10. for {
  11. select {
  12. case <-ch:
  13. fmt.Println(time.Now())
  14. time.AfterFunc(1*time.Second, func() {
  15. ch <- time.Now()
  16. })
  17. }
  18. }
  19. }
  20. func BenchmarkReset(b *testing.B) {
  21. tc := time.NewTimer(1 * time.Nanosecond)
  22. for i := 0; i < 1000000; i++ {
  23. select {
  24. case <-tc.C:
  25. tc.Reset(1 * time.Nanosecond)
  26. }
  27. }
  28. /*
  29. goos: darwin
  30. goarch: amd64
  31. pkg: trial/timer
  32. cpu: Intel(R) Core(TM) i7-4770HQ CPU @ 2.20GHz
  33. BenchmarkReset-8 1 1082548694 ns/op
  34. */
  35. }
  36. func BenchmarkNewTimer(b *testing.B) {
  37. tc := time.NewTimer(1 * time.Nanosecond)
  38. for i := 0; i < 1000000; i++ {
  39. select {
  40. case <-tc.C:
  41. tc = time.NewTimer(1 * time.Nanosecond)
  42. }
  43. }
  44. /*
  45. goos: darwin
  46. goarch: amd64
  47. pkg: trial/timer
  48. cpu: Intel(R) Core(TM) i7-4770HQ CPU @ 2.20GHz
  49. BenchmarkNewTimer-8 1 1570331115 ns/op
  50. */
  51. }
  52. func BenchmarkStop(b *testing.B) {
  53. tc := time.NewTimer(1 * time.Nanosecond)
  54. for i := 0; i < 1000000; i++ {
  55. tc.Stop()
  56. tc.Reset(1 * time.Nanosecond)
  57. }
  58. tc.Stop()
  59. /*
  60. goos: darwin
  61. goarch: amd64
  62. pkg: trial/timer
  63. cpu: Intel(R) Core(TM) i7-4770HQ CPU @ 2.20GHz
  64. BenchmarkStop-8 1000000000 0.1683 ns/op
  65. */
  66. }
  67. func BenchmarkReset1(b *testing.B) {
  68. tc := time.NewTimer(1 * time.Nanosecond)
  69. for i := 0; i < 1000000; i++ {
  70. tc = time.NewTimer(1 * time.Nanosecond)
  71. }
  72. /*
  73. goos: darwin
  74. goarch: amd64
  75. pkg: trial/timer
  76. cpu: Intel(R) Core(TM) i7-4770HQ CPU @ 2.20GHz
  77. BenchmarkReset1-8 1000000000 0.5614 ns/op
  78. */
  79. tc.Stop()
  80. }