Files
supersonic/backend/util/stopwatch.go
T

39 lines
535 B
Go

package util
import "time"
type Stopwatch struct {
running bool
started time.Time
elapsed time.Duration
}
func (s *Stopwatch) Start() {
if s.running {
return
}
s.started = time.Now()
s.running = true
}
func (s *Stopwatch) Stop() {
if !s.running {
return
}
s.elapsed += time.Since(s.started)
s.running = false
}
func (s *Stopwatch) Elapsed() time.Duration {
e := s.elapsed
if s.running {
e += time.Since(s.started)
}
return e
}
func (s *Stopwatch) Reset() {
s.running = false
s.elapsed = time.Duration(0)
}