[Libguestfs] [PATCH libnbd 8/9] golang: aio_buffer.go: Benchmark copy flows

Eric Blake eblake at redhat.com
Tue Feb 1 13:14:37 UTC 2022


On Sun, Jan 30, 2022 at 01:33:36AM +0200, Nir Soffer wrote:
> Add benchmark for coping a buffer using 3 strategies - reusing same
> buffer, making a new uninitialized buffer per copy, and using a zeroed
> buffer per copy. This benchmark is the worst possible case, coping a

copying

> buffer to memory. Any real I/O will be much slower hiding the overhead
> of allocating buffer or zeroed buffered.

will be much slower, hiding the overhead of allocating or zeroing buffers.

> 
> $ go test -run=AioBuffer -bench=Copy -benchtime=5s
> goos: linux
> goarch: amd64
> pkg: libguestfs.org/libnbd
> cpu: Intel(R) Core(TM) i7-10850H CPU @ 2.70GHz
> BenchmarkAioBufferCopyBaseline-12    	 1142508	      4523 ns/op
> BenchmarkAioBufferCopyMake-12        	 1000000	      5320 ns/op
> BenchmarkAioBufferCopyMakeZero-12    	  728940	      8218 ns/op
> 
> Signed-off-by: Nir Soffer <nsoffer at redhat.com>
> ---
>  golang/libnbd_620_aio_buffer_test.go | 32 ++++++++++++++++++++++++++++
>  1 file changed, 32 insertions(+)
> 
> diff --git a/golang/libnbd_620_aio_buffer_test.go b/golang/libnbd_620_aio_buffer_test.go
> index 8f65b558..9ab411b3 100644
> --- a/golang/libnbd_620_aio_buffer_test.go
> +++ b/golang/libnbd_620_aio_buffer_test.go
> @@ -195,10 +195,42 @@ func BenchmarkAioBufferBytes(b *testing.B) {
>  func BenchmarkAioBufferSlice(b *testing.B) {
>  	buf := MakeAioBuffer(bufferSize)
>  	defer buf.Free()
>  	var r int
>  
>  	b.ResetTimer()

Looks like you had a blank line with trailing whitespace in an earlier patch.

-- 
Eric Blake, Principal Software Engineer
Red Hat, Inc.           +1-919-301-3266
Virtualization:  qemu.org | libvirt.org




More information about the Libguestfs mailing list