From e96d83549b721fa51f12ad8e1364eb3e0f5fc81b Mon Sep 17 00:00:00 2001 From: Evgenii Stratonikov Date: Wed, 1 Mar 2023 17:09:26 +0300 Subject: [PATCH] [TrueCloudLab#22] datagen: Allocate buffer once Signed-off-by: Evgenii Stratonikov --- internal/datagen/generator.go | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/internal/datagen/generator.go b/internal/datagen/generator.go index 9801c7e..e30841e 100644 --- a/internal/datagen/generator.go +++ b/internal/datagen/generator.go @@ -43,7 +43,11 @@ func NewGenerator(vu modules.VU, size int) Generator { if size <= 0 { panic("size should be positive") } - return Generator{vu: vu, size: size, buf: nil, offset: 0} + return Generator{ + vu: vu, + size: size, + buf: make([]byte, size+TailSize), + } } func (g *Generator) GenPayload(calcHash bool) GenPayloadResponse { @@ -60,9 +64,8 @@ func (g *Generator) GenPayload(calcHash bool) GenPayloadResponse { } func (g *Generator) nextSlice() []byte { - if g.buf == nil { - // Allocate buffer with extra tail for sliding and populate it with random bytes - g.buf = make([]byte, g.size+TailSize) + if g.offset >= TailSize { + g.offset = 0 rand.Read(g.buf) // Per docs, err is always nil here } @@ -71,10 +74,5 @@ func (g *Generator) nextSlice() []byte { // Shift the offset for the next call. If we've used our entire tail, then erase // the buffer so that on the next call it is regenerated anew g.offset += 1 - if g.offset >= TailSize { - g.buf = nil - g.offset = 0 - } - return result }