From da9baa20f27f24b09dd7089125438c9c3ef090df Mon Sep 17 00:00:00 2001 From: Ben Charlton Date: Tue, 10 Jul 2018 23:01:36 +0100 Subject: [PATCH] Improve sleep timings, use ms for elapsed time --- rigol.go | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/rigol.go b/rigol.go index bf8ab72..a6ce810 100644 --- a/rigol.go +++ b/rigol.go @@ -39,7 +39,7 @@ func main() { toRun, header := buildQuery() // Output CSV header - fmt.Printf("%s, %s, %s\n", "timestamp", header, "querytime") + fmt.Printf("%s, %s, %s\n", "timestamp", header, "querytime(ms)") for ; *count != 0; *count-- { @@ -58,9 +58,20 @@ func main() { result = strings.Replace(result, ";", ", ", -1) tdone := time.Now() - fmt.Printf("%s, %s, %s\n", tdone.Format(time.RFC3339), result, tdone.Sub(tstart)) + taken := tdone.Sub(tstart) + takenms := int64(taken/time.Millisecond) + + fmt.Printf("%s, %s, %d\n", tdone.Format(time.RFC3339), result, takenms) + + // Shorten the interval to allow for the time taken for the previous run. + // but if the time taken is longer than the interval, no need to sleep at all. + intervalms := int64(*interval * 1000) + if takenms < intervalms { + sleeptime := time.Duration(intervalms - takenms) * time.Millisecond + fmt.Println("Sleeping", sleeptime, "as duration was", taken) + time.Sleep(sleeptime) + } - time.Sleep(time.Duration(*interval) * time.Second) } }