Skip to content

Latest commit

 

History

History
69 lines (52 loc) · 1.53 KB

README_cn.md

File metadata and controls

69 lines (52 loc) · 1.53 KB

gtimer - 一个简易的go程序耗时统计工具

  • 特点:基于goid库,可以在同一个goroutine上的各个函数内,不传递上下文对象的情况下,对完整过程进行耗时统计

基本用法:

  • 创建统计任务
// 简易方法,以该行代码为统计起点,以该函数退出为统计终点
defer gtimer.Start("job name").End()

// 更为灵活的方法
timer := gtimer.Start("job name")
...
timer.End()
  • 记录时间点
gtimer.Tick("step name") // 自动获取当前goroutine上已经创建好的timer对象,进行打点记录。如果无已创建的timer,该打点无效
  • 自定义结果处理
  1. 单独设置结果处理方法
defer gtimer.Start("job name").EndWithWriter(func(topic string, steps gtimer.Steps) {
    //TODO process topic and steps
})
  1. 全局替换默认的结果处理方法
gtimer.SetDefaultWriter(func(topic string, steps gtimer.Steps) {
    //TODO process topic and steps
})
...
gtimer.Start("job name").End()

例子:

// gtimer_test.go

func testFunc() {
	gtimer.Tick("enter testFunc")
	time.Sleep(150 * time.Millisecond)
	gtimer.Tick("exit testFunc")
}

func TestTimer(t *testing.T) {
	defer gtimer.Start("test1").End()
	time.Sleep(100 * time.Millisecond)
	testFunc()
	time.Sleep(50 * time.Millisecond)
}

/* Output:
Time cost for topic 'test1' total 302.772167ms: 
  |- [begin-enter testFunc]: 101.1695ms
  |- [enter testFunc-exit testFunc]: 151.044334ms
  |- [exit testFunc-end]: 50.558333ms
*/