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  }