From e9544cbb6fb446b65697099b65ff43cb7e225d7a Mon Sep 17 00:00:00 2001 From: Aliaksandr Valialkin Date: Mon, 4 Apr 2016 15:02:33 +0300 Subject: [PATCH] client: get rid of slow math/rand for sleep jitter generation --- client.go | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/client.go b/client.go index b391070..4102246 100644 --- a/client.go +++ b/client.go @@ -7,7 +7,6 @@ import ( "errors" "fmt" "io" - "math/rand" "net" "strings" "sync" @@ -860,10 +859,13 @@ func clientDoDeadline(req *Request, resp *Response, deadline time.Time, c client } } +var sleepJitter uint64 + func updateSleepTime(prevTime time.Duration, deadline time.Time) time.Duration { sleepTime := prevTime * 2 if sleepTime == 0 { - sleepTime = (10 + time.Duration(rand.Intn(40))) * time.Millisecond + jitter := atomic.AddUint64(&sleepJitter, 1) % 40 + sleepTime = (10 + time.Duration(jitter)) * time.Millisecond } remainingTime := deadline.Sub(time.Now())