feat: super 包新增 LossCounter,适用于统计代码段时间损耗,可通过 super.StartLossCounter 函数进行使用

This commit is contained in:
kercylan98 2023-10-21 18:19:11 +08:00
parent b5b126ef07
commit 2b49a36e8e
1 changed files with 28 additions and 0 deletions

View File

@ -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)
}
}