From e072bc9626e19d320025b60ea724992400b8bdd4 Mon Sep 17 00:00:00 2001 From: machongwei Date: Thu, 18 Aug 2022 20:09:46 +0800 Subject: [PATCH] perf: hrp boom run time related code optimization --- hrp/internal/boomer/runner.go | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/hrp/internal/boomer/runner.go b/hrp/internal/boomer/runner.go index fce9fa83..4a3d71ef 100644 --- a/hrp/internal/boomer/runner.go +++ b/hrp/internal/boomer/runner.go @@ -240,17 +240,11 @@ func (r *runner) getSpawnRate() float64 { } func (r *runner) setRunTime(runTime int64) { - r.mutex.Lock() - defer r.mutex.Unlock() - if runTime > 0 { - r.runTime = time.Now().Unix() + runTime - } + atomic.StoreInt64(&r.runTime, time.Now().Unix()+runTime) } func (r *runner) getRunTime() int64 { - r.mutex.RLock() - defer r.mutex.RUnlock() - return r.runTime + return atomic.LoadInt64(&r.runTime) } func (r *runner) getSpawnCount() int64 { @@ -384,11 +378,17 @@ func (r *runner) runTimeCheck(runTime int64) { return } - for range time.Tick(time.Second * 3) { - nowTime := time.Now().Unix() - if nowTime > runTime { - r.stop() + var ticker = time.NewTicker(time.Second * 3) + for { + select { + case <-r.stopChan: return + case <-ticker.C: + nowTime := time.Now().Unix() + if nowTime > runTime { + r.stop() + return + } } } }