From 2b49a36e8ef1679d595193a8cd9b4ae7c4164be5 Mon Sep 17 00:00:00 2001 From: kercylan98 Date: Sat, 21 Oct 2023 18:19:11 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20super=20=E5=8C=85=E6=96=B0=E5=A2=9E=20L?= =?UTF-8?q?ossCounter=EF=BC=8C=E9=80=82=E7=94=A8=E4=BA=8E=E7=BB=9F?= =?UTF-8?q?=E8=AE=A1=E4=BB=A3=E7=A0=81=E6=AE=B5=E6=97=B6=E9=97=B4=E6=8D=9F?= =?UTF-8?q?=E8=80=97=EF=BC=8C=E5=8F=AF=E9=80=9A=E8=BF=87=20super.StartLoss?= =?UTF-8?q?Counter=20=E5=87=BD=E6=95=B0=E8=BF=9B=E8=A1=8C=E4=BD=BF?= =?UTF-8?q?=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- utils/super/loss_counter.go | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 utils/super/loss_counter.go diff --git a/utils/super/loss_counter.go b/utils/super/loss_counter.go new file mode 100644 index 0000000..9e38bca --- /dev/null +++ b/utils/super/loss_counter.go @@ -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) + } +}