# README
stats
Package stats implements a generic benchmarking tool.
Get started
Install
go get github.com/hslam/stats
Import
import "github.com/hslam/stats"
Example
package main
import (
"github.com/hslam/stats"
"math/rand"
"time"
)
func main() {
var Clients []stats.Client
for i := 0; i < 1e2; i++ {
Clients = append(Clients, &Client{})
}
parallel := 32
totalCalls := 1000000
stats.StartPrint(parallel, totalCalls, Clients)
}
type Client struct {
}
func (c *Client) Call() (int64, int64, bool) {
time.Sleep(time.Microsecond * time.Duration(rand.Intn(1000)))
if rand.Intn(1000) == 1 {
return 1e3, 0, false
}
return 1e3, 1e3, true
}
Output
Summary:
Clients: 100
Parallel calls per client: 32
Total calls: 1000000
Total time: 0.70s
Requests per second: 1427276.68
Fastest time for request: 0.00ms
Average time per request: 2.19ms
Slowest time for request: 16.67ms
Time:
0.1% time for request: 0.00ms
1% time for request: 0.46ms
5% time for request: 0.71ms
10% time for request: 0.89ms
25% time for request: 1.32ms
50% time for request: 2.00ms
75% time for request: 2.78ms
90% time for request: 3.64ms
95% time for request: 4.33ms
99% time for request: 6.43ms
99.9% time for request: 9.79ms
Request:
Total request body sizes: 1000000000
Average body size per request: 1000.00 Byte
Request rate per second: 1427276684.72 Byte/s (1427.28 MByte/s)
Response:
Total response body sizes: 998982000
Average body size per response: 1000.00 Byte
Response rate per second: 1425823717.06 Byte/s (1425.82 MByte/s)
Result:
Response ok: 998982 (99.90%)
Errors: 1018 (0.10%)
License
This package is licensed under a MIT license (Copyright (c) 2019 Meng Huang)
Author
stats was written by Meng Huang.