time.Since() executed time.Now() under the hood.
If we need time.Time as well as time.Duration (since), we can do this optimization:
elapsed := time.Since(oldTime)
oldTime = time.Now()
// =>
newTime := time.Now()
elapsed := newTime.Sub(oldTime)
oldTime = newTime