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