]> Cypherpunks repositories - gostls13.git/commit
compress/flate: remove unneeded zeroing of bytes array in (*huffmanBitWriter).reset
authorDan Scales <danscales@google.com>
Wed, 30 Sep 2020 23:34:47 +0000 (16:34 -0700)
committerDan Scales <danscales@google.com>
Tue, 6 Oct 2020 20:30:36 +0000 (20:30 +0000)
commit04c7e32517faf6257986e7c4cdd3f5f03eeae37b
treef31f611af939a6994375cd41bf9fec01c7ba7e39
parentbdab5df40f474c7768a945ef4fcf5aab634f7af5
compress/flate: remove unneeded zeroing of bytes array in (*huffmanBitWriter).reset

There is no correctness reason to zero out the w.bytes array in (w
*huffmanBitWriter).reset, since w.nbytes is correctly set to zero. The elements of
the bytes array are always written sequentially, with nbytes indicating how many
elements have been written, and are only read up to the current value of nybytes.

We have a pprof profile of a web server that compresses its request/responses, and
the zeroing in reset() is taking up 2.6% of the CPU time of the server (and could
be causing more slowdowns elsewhere due to its effects on the cache). This
overhead may be showing up especially because there are many request/responses
that are all fairly small.

I'm not sure if the zeroing of the bytes array was intended as extra protection of
data across reset uses in the same program, but no protection is needed as long as
the huffman_bit_writer code remains correct.

Change-Id: I67f2b2f56cff9dcc38d8fc0aea885bb010aeedbf
Reviewed-on: https://go-review.googlesource.com/c/go/+/258577
Run-TryBot: Dan Scales <danscales@google.com>
Run-TryBot: Joe Tsai <joetsai@google.com>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Klaus Post <klauspost@gmail.com>
Reviewed-by: Joe Tsai <joetsai@google.com>
Trust: Joe Tsai <joetsai@google.com>
Trust: Dan Scales <danscales@google.com>
src/compress/flate/huffman_bit_writer.go