github.com/linapex/ethereum-go-chinese@v0.0.0-20190316121929-f8b7a73c3fa1/metrics/metrics_test.go (about) 1 2 //<developer> 3 // <name>linapex 曹一峰</name> 4 // <email>linapex@163.com</email> 5 // <wx>superexc</wx> 6 // <qqgroup>128148617</qqgroup> 7 // <url>https://jsq.ink</url> 8 // <role>pku engineer</role> 9 // <date>2019-03-16 19:16:40</date> 10 //</624450099526766592> 11 12 package metrics 13 14 import ( 15 "fmt" 16 "io/ioutil" 17 "log" 18 "sync" 19 "testing" 20 "time" 21 ) 22 23 const FANOUT = 128 24 25 //停止编译器在调试期间抱怨。 26 var ( 27 _ = ioutil.Discard 28 _ = log.LstdFlags 29 ) 30 31 func BenchmarkMetrics(b *testing.B) { 32 r := NewRegistry() 33 c := NewRegisteredCounter("counter", r) 34 g := NewRegisteredGauge("gauge", r) 35 gf := NewRegisteredGaugeFloat64("gaugefloat64", r) 36 h := NewRegisteredHistogram("histogram", r, NewUniformSample(100)) 37 m := NewRegisteredMeter("meter", r) 38 t := NewRegisteredTimer("timer", r) 39 RegisterDebugGCStats(r) 40 RegisterRuntimeMemStats(r) 41 b.ResetTimer() 42 ch := make(chan bool) 43 44 wgD := &sync.WaitGroup{} 45 /* 46 添加(1) 47 转到函数() 48 推迟wgd.done() 49 //log.println(“go capturedebuggstats”)。 50 对于{ 51 选择{ 52 案例<CH: 53 //log.println(“完成capturedebuggcstats”) 54 返回 55 违约: 56 CaptureDebuggCStatsonce(右) 57 } 58 } 59 }() 60 /*/ 61 62 63 wgR := &sync.WaitGroup{} 64 /* 65 添加(1) 66 转到函数() 67 推迟wgr.done() 68 //log.println(“go captureruntimemstats”)。 69 对于{ 70 选择{ 71 案例<CH: 72 //log.println(“done captureruntimemstats”)。 73 返回 74 违约: 75 捕获者untimemstattsone(r) 76 } 77 } 78 }() 79 /*/ 80 81 82 wgW := &sync.WaitGroup{} 83 /* 84 添加(1) 85 转到函数() 86 推迟wgw.done() 87 //日志.println(“go write”) 88 对于{ 89 选择{ 90 案例<CH: 91 //log.println(“完成写入”) 92 返回 93 违约: 94 一次写入(r,ioutil.discard) 95 } 96 } 97 }() 98 /*/ 99 100 101 wg := &sync.WaitGroup{} 102 wg.Add(FANOUT) 103 for i := 0; i < FANOUT; i++ { 104 go func(i int) { 105 defer wg.Done() 106 //log.println(“开始”,i) 107 for i := 0; i < b.N; i++ { 108 c.Inc(1) 109 g.Update(int64(i)) 110 gf.Update(float64(i)) 111 h.Update(int64(i)) 112 m.Mark(1) 113 t.Update(1) 114 } 115 //log.println(“完成”,i) 116 }(i) 117 } 118 wg.Wait() 119 close(ch) 120 wgD.Wait() 121 wgR.Wait() 122 wgW.Wait() 123 } 124 125 func Example() { 126 c := NewCounter() 127 Register("money", c) 128 c.Inc(17) 129 130 //螺纹安全注册 131 t := GetOrRegisterTimer("db.get.latency", nil) 132 t.Time(func() { time.Sleep(10 * time.Millisecond) }) 133 t.Update(1) 134 135 fmt.Println(c.Count()) 136 fmt.Println(t.Min()) 137 //产量:17 138 //一 139 } 140