feat: super 包新增 LossCounter,适用于统计代码段时间损耗,可通过 super.StartLossCounter 函数进行使用
This commit is contained in:
parent
b5b126ef07
commit
2b49a36e8e
|
@ -0,0 +1,28 @@
|
|||
package super
|
||||
|
||||
import "time"
|
||||
|
||||
// StartLossCounter 开始损耗计数
|
||||
func StartLossCounter() *LossCounter {
|
||||
return &LossCounter{curr: time.Now()}
|
||||
}
|
||||
|
||||
type LossCounter struct {
|
||||
curr time.Time
|
||||
loss []time.Duration
|
||||
lossKey []string
|
||||
}
|
||||
|
||||
// Record 记录一次损耗
|
||||
func (slf *LossCounter) Record(name string) {
|
||||
slf.loss = append(slf.loss, time.Since(slf.curr))
|
||||
slf.lossKey = append(slf.lossKey, name)
|
||||
slf.curr = time.Now()
|
||||
}
|
||||
|
||||
// GetLoss 获取损耗
|
||||
func (slf *LossCounter) GetLoss(handler func(step int, name string, loss time.Duration)) {
|
||||
for i, loss := range slf.loss {
|
||||
handler(i, slf.lossKey[i], loss)
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue