github.com/yinchengtsinghua/golang-Eos-dpos-Ethereum@v0.0.0-20190121132951-92cc4225ed8e/metrics/metrics_test.go (about) 1 2 //此源码被清华学神尹成大魔王专业翻译分析并修改 3 //尹成QQ77025077 4 //尹成微信18510341407 5 //尹成所在QQ群721929980 6 //尹成邮箱 yinc13@mails.tsinghua.edu.cn 7 //尹成毕业于清华大学,微软区块链领域全球最有价值专家 8 //https://mvp.microsoft.com/zh-cn/PublicProfile/4033620 9 package metrics 10 11 import ( 12 "fmt" 13 "io/ioutil" 14 "log" 15 "sync" 16 "testing" 17 "time" 18 ) 19 20 const FANOUT = 128 21 22 //停止编译器在调试期间抱怨。 23 var ( 24 _ = ioutil.Discard 25 _ = log.LstdFlags 26 ) 27 28 func BenchmarkMetrics(b *testing.B) { 29 r := NewRegistry() 30 c := NewRegisteredCounter("counter", r) 31 g := NewRegisteredGauge("gauge", r) 32 gf := NewRegisteredGaugeFloat64("gaugefloat64", r) 33 h := NewRegisteredHistogram("histogram", r, NewUniformSample(100)) 34 m := NewRegisteredMeter("meter", r) 35 t := NewRegisteredTimer("timer", r) 36 RegisterDebugGCStats(r) 37 RegisterRuntimeMemStats(r) 38 b.ResetTimer() 39 ch := make(chan bool) 40 41 wgD := &sync.WaitGroup{} 42 /* 43 添加(1) 44 转到函数() 45 推迟wgd.done() 46 //log.println(“go capturedebuggstats”)。 47 对于{ 48 选择{ 49 案例<CH: 50 //log.println(“完成capturedebuggcstats”) 51 返回 52 违约: 53 CaptureDebuggCStatsonce(右) 54 } 55 } 56 }() 57 /*/ 58 59 60 wgR := &sync.WaitGroup{} 61 /* 62 添加(1) 63 转到函数() 64 推迟wgr.done() 65 //log.println(“go captureruntimemstats”)。 66 对于{ 67 选择{ 68 案例<CH: 69 //log.println(“done captureruntimemstats”)。 70 返回 71 违约: 72 捕获者untimemstattsone(r) 73 } 74 } 75 }() 76 /*/ 77 78 79 wgW := &sync.WaitGroup{} 80 /* 81 添加(1) 82 转到函数() 83 推迟wgw.done() 84 //日志.println(“go write”) 85 对于{ 86 选择{ 87 案例<CH: 88 //log.println(“完成写入”) 89 返回 90 违约: 91 一次写入(r,ioutil.discard) 92 } 93 } 94 }() 95 /*/ 96 97 98 wg := &sync.WaitGroup{} 99 wg.Add(FANOUT) 100 for i := 0; i < FANOUT; i++ { 101 go func(i int) { 102 defer wg.Done() 103 //log.println(“开始”,i) 104 for i := 0; i < b.N; i++ { 105 c.Inc(1) 106 g.Update(int64(i)) 107 gf.Update(float64(i)) 108 h.Update(int64(i)) 109 m.Mark(1) 110 t.Update(1) 111 } 112 //log.println(“完成”,i) 113 }(i) 114 } 115 wg.Wait() 116 close(ch) 117 wgD.Wait() 118 wgR.Wait() 119 wgW.Wait() 120 } 121 122 func Example() { 123 c := NewCounter() 124 Register("money", c) 125 c.Inc(17) 126 127 //螺纹安全注册 128 t := GetOrRegisterTimer("db.get.latency", nil) 129 t.Time(func() { time.Sleep(10 * time.Millisecond) }) 130 t.Update(1) 131 132 fmt.Println(c.Count()) 133 fmt.Println(t.Min()) 134 //产量:17 135 //一 136 }