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