Zero out only that part of the hash table in use.

Obviously, the biggest gains are for the smallest inputs.

The WordsEncode1e1-8 benchmark should be unaffected (except possibly by
noise) because it never calls into encodeBlock.

name              old speed      new speed       delta
WordsEncode1e1-8   678MB/s ± 0%    667MB/s ± 0%    -1.74%  (p=0.008 n=5+5)
WordsEncode1e2-8  90.1MB/s ± 0%  352.9MB/s ± 1%  +291.85%  (p=0.008 n=5+5)
WordsEncode1e3-8   295MB/s ± 0%    383MB/s ± 1%   +29.67%  (p=0.008 n=5+5)
WordsEncode1e4-8   276MB/s ± 0%    277MB/s ± 1%      ~     (p=0.310 n=5+5)
WordsEncode1e5-8   248MB/s ± 0%    248MB/s ± 0%      ~     (p=0.841 n=5+5)
WordsEncode1e6-8   295MB/s ± 0%    296MB/s ± 0%      ~     (p=0.548 n=5+5)
RandomEncode-8    14.4GB/s ± 1%   14.4GB/s ± 2%      ~     (p=1.000 n=5+5)
_ZFlat0-8          749MB/s ± 0%    748MB/s ± 0%      ~     (p=0.151 n=5+5)
_ZFlat1-8          405MB/s ± 0%    406MB/s ± 0%    +0.18%  (p=0.032 n=4+5)
_ZFlat2-8         16.2GB/s ± 1%   16.1GB/s ± 1%      ~     (p=0.421 n=5+5)
_ZFlat3-8          202MB/s ± 1%    604MB/s ± 0%  +198.86%  (p=0.008 n=5+5)
_ZFlat4-8         7.59GB/s ± 1%   7.62GB/s ± 1%      ~     (p=0.548 n=5+5)
_ZFlat5-8          728MB/s ± 1%    729MB/s ± 0%      ~     (p=0.548 n=5+5)
_ZFlat6-8          266MB/s ± 1%    267MB/s ± 0%      ~     (p=0.548 n=5+5)
_ZFlat7-8          248MB/s ± 0%    248MB/s ± 0%      ~     (p=0.881 n=5+5)
_ZFlat8-8          282MB/s ± 0%    282MB/s ± 0%      ~     (p=0.556 n=4+5)
_ZFlat9-8          231MB/s ± 0%    231MB/s ± 0%    +0.23%  (p=0.032 n=5+5)
_ZFlat10-8         970MB/s ± 0%    972MB/s ± 0%      ~     (p=0.421 n=5+5)
_ZFlat11-8         402MB/s ± 0%    401MB/s ± 0%      ~     (p=0.730 n=5+5)
1 file changed