func latencyAndThroughput() { if *isWrite { log.Printf("Measuring throughput and latency of write operations with size %vB\n", *size) } else { log.Printf("Measuring throughput and latency of read operations with size %vB\n", *size) } data := createFakeData() startTime := time.Now() if *isWrite { for ops = 0; ops < *numberOfOperations; ops++ { timeBefore := time.Now() err := freestoreClient.Write(data) timeAfter := time.Now() if err != nil { log.Fatalln(err) } latencies = append(latencies, timeAfter.Sub(timeBefore).Nanoseconds()) } } else { err := freestoreClient.Write(data) if err != nil { log.Fatalln("ERROR initial write:", err) } for ops = 0; ops < *numberOfOperations; ops++ { timeBefore := time.Now() _, err = freestoreClient.Read() timeAfter := time.Now() if err != nil { log.Fatalln(err) } latencies = append(latencies, timeAfter.Sub(timeBefore).Nanoseconds()) } } endTime := time.Now() duration := endTime.Sub(startTime) gostat.TakeExtremes(latencies) latenciesMean := gostat.Mean(latencies) latenciesStandardDeviation := gostat.StandardDeviation(latencies) latenciesMeanDuration := time.Duration(int64(latenciesMean)) latenciesStandardDeviationDuration := time.Duration(int64(latenciesStandardDeviation)) opsPerSecond := float64(ops) / duration.Seconds() fmt.Printf("Result: latency %v (%v) - throughput %v [%v in %v]\n", latenciesMeanDuration, latenciesStandardDeviationDuration, int64(opsPerSecond), ops, duration.Seconds()) saveResults(int64(latenciesMean), int64(latenciesStandardDeviation), int64(opsPerSecond), ops) }
func latency() { if *isWrite { log.Printf("Measuring latency of write operations with size %vB\n", *size) } else { log.Printf("Measuring latency of read operations with size %vB\n", *size) } data := createFakeData() if *isWrite { for ops = 0; ops < *numberOfOperations; ops++ { timeBefore := time.Now() err := freestoreClient.Write(data) timeAfter := time.Now() if err != nil { log.Fatalln(err) } latencies = append(latencies, timeAfter.Sub(timeBefore).Nanoseconds()) } } else { err := freestoreClient.Write(data) if err != nil { log.Fatalln("Initial write:", err) } for ops = 0; ops < *numberOfOperations; ops++ { timeBefore := time.Now() _, err = freestoreClient.Read() timeAfter := time.Now() if err != nil { log.Fatalln(err) } latencies = append(latencies, timeAfter.Sub(timeBefore).Nanoseconds()) } } gostat.TakeExtremes(latencies) latenciesMean := gostat.Mean(latencies) latenciesStandardDeviation := gostat.StandardDeviation(latencies) latenciesMeanDuration := time.Duration(int64(latenciesMean)) latenciesStandardDeviationDuration := time.Duration(int64(latenciesStandardDeviation)) fmt.Printf("Result: latency %v (%v) - %v ops\n", latenciesMeanDuration, latenciesStandardDeviationDuration, ops) saveResults(int64(latenciesMean), int64(latenciesStandardDeviation), 0, ops) }