How do i write a benchmark script in Go to measure

2019-05-26 13:35发布

I am practicing my Golang by writing a simple Redis clone.

How do i write a benchmark script that would establish X connections per second at C concurrency level to deal with my server's protocol and measure how many ops/sec?

I can simply write a script that would actually do this:

for i := range(1000) {
    // Open connection
    // Perform command
    // Close connection
}

But i want to know the concept behind distributing the number of connections per concurrency level per second.

1条回答
干净又极端
2楼-- · 2019-05-26 13:47

This is best handled by the built-in testing.Benchmark system. For example, a test case like:

func BenchmarkHello(b *testing.B) {
    for i := 0; i < b.N; i++ {
        fmt.Sprintf("hello")
    }
}

will automatically work out timing calculations for this function. See the package documentation for more details on setting it up, but it should be very familiar if you've written Go test cases before.

To your question about concurrency benchmarking, see the RunParallel helper, which is specifically to assist in this.

查看更多
登录 后发表回答