Rewrote the integer encoding/decoding logic. It now takes 1 byte to encode 0..63 and 2 to encode 64..2**15. Integers >= than 2**15 are always encoded with a prefix byte that represents their length.
# Before
serde_json | Replica: 596.94 KB
serde_json | Total insertions: 6.62 MB
serde_json | Total deletions: 4.04 MB
bincode | Replica: 229.98 KB
bincode | Total insertions: 3.96 MB
bincode | Total deletions: 2.16 MB
zstd'd serde_json | Replica: 153.61 KB
zstd'd serde_json | Total insertions: 7.36 MB
zstd'd serde_json | Total deletions: 4.61 MB
zstd'd bincode | Replica: 128.68 KB
zstd'd bincode | Total insertions: 5.52 MB
zstd'd bincode | Total deletions: 2.82 MB
# After
serde_json | Replica: 553.96 KB
serde_json | Total insertions: 5.98 MB
serde_json | Total deletions: 3.78 MB
bincode | Replica: 163.05 KB
bincode | Total insertions: 3.24 MB
bincode | Total deletions: 1.81 MB
zstd'd serde_json | Replica: 156.95 KB
zstd'd serde_json | Total insertions: 7.08 MB
zstd'd serde_json | Total deletions: 4.42 MB
zstd'd bincode | Replica: 134.37 KB
zstd'd bincode | Total insertions: 4.81 MB
zstd'd bincode | Total deletions: 2.47 MB
Rewrote the integer encoding/decoding logic. It now takes 1 byte to encode
0..63
and 2 to encode64..2**15
. Integers>=
than2**15
are always encoded with a prefix byte that represents their length.