roaring
roaring copied to clipboard
simplify checksum function
This simplifies the CheckSum function. I am not expecting nor seeing a performance difference. I am also adding a check to make sure we do not check the CheckSum results.
benchstat old.txt new.txt
goos: darwin
goarch: arm64
pkg: github.com/RoaringBitmap/roaring/v2
cpu: Apple M4 Max
│ old.txt │ new.txt │
│ sec/op │ sec/op vs base │
Checksum/checksum-1-14 0.0000003000n ± ∞ ¹ 0.0000001000n ± ∞ ¹ ~ (p=1.000 n=1) ²
Checksum/checksum-compressed-1-14 0.0000001000n ± ∞ ¹ 0.0000001000n ± ∞ ¹ ~ (p=1.000 n=1) ³
Checksum/checksum-2-14 0.0000001000n ± ∞ ¹
Checksum/checksum-compressed-2-14 0.0000001000n ± ∞ ¹ 0.0000002000n ± ∞ ¹ ~ (p=1.000 n=1) ²
Checksum/checksum-4-14 0.0000001000n ± ∞ ¹ 0.0000001000n ± ∞ ¹ ~ (p=1.000 n=1) ³
Checksum/checksum-compressed-4-14 0.0000001000n ± ∞ ¹ 0.0000001000n ± ∞ ¹ ~ (p=1.000 n=1) ³
Checksum/checksum-8-14 0.0000001000n ± ∞ ¹ 0.0000002000n ± ∞ ¹ ~ (p=1.000 n=1) ²
Checksum/checksum-compressed-8-14 0.0000001000n ± ∞ ¹ 0.0000002000n ± ∞ ¹ ~ (p=1.000 n=1) ²
Checksum/checksum-16-14 0.0000002000n ± ∞ ¹ 0.0000001000n ± ∞ ¹ ~ (p=1.000 n=1) ²
Checksum/checksum-compressed-16-14 0.0000002000n ± ∞ ¹ 0.0000002000n ± ∞ ¹ ~ (p=1.000 n=1) ³
Checksum/checksum-32-14 0.0000002000n ± ∞ ¹ 0.0000002000n ± ∞ ¹ ~ (p=1.000 n=1) ³
Checksum/checksum-compressed-32-14 0.0000002000n ± ∞ ¹ 0.0000004000n ± ∞ ¹ ~ (p=1.000 n=1) ²
Checksum/checksum-64-14 0.0000005000n ± ∞ ¹ 0.0000003000n ± ∞ ¹ ~ (p=1.000 n=1) ²
Checksum/checksum-compressed-64-14 0.0000006000n ± ∞ ¹ 0.0000005000n ± ∞ ¹ ~ (p=1.000 n=1) ²
Checksum/checksum-128-14 0.0000005000n ± ∞ ¹ 0.0000005000n ± ∞ ¹ ~ (p=1.000 n=1) ³
Checksum/checksum-compressed-128-14 0.0000008000n ± ∞ ¹ 0.0000008000n ± ∞ ¹ ~ (p=1.000 n=1) ³
Checksum/checksum-256-14 0.0000008000n ± ∞ ¹ 0.0000091000n ± ∞ ¹ ~ (p=1.000 n=1) ²
Checksum/checksum-compressed-256-14 0.000001500n ± ∞ ¹ 0.000001500n ± ∞ ¹ ~ (p=1.000 n=1) ³
Checksum/checksum-512-14 0.000001500n ± ∞ ¹ 0.000001500n ± ∞ ¹ ~ (p=1.000 n=1) ³
Checksum/checksum-compressed-512-14 0.000002700n ± ∞ ¹ 0.000002500n ± ∞ ¹ ~ (p=1.000 n=1) ²
Checksum/checksum-1024-14 0.000002700n ± ∞ ¹ 0.000002700n ± ∞ ¹ ~ (p=1.000 n=1) ³
Checksum/checksum-compressed-1024-14 0.000005000n ± ∞ ¹ 0.000004900n ± ∞ ¹ ~ (p=1.000 n=1) ²
Checksum/checksum-2048-14 0.000005400n ± ∞ ¹ 0.000005400n ± ∞ ¹ ~ (p=1.000 n=1) ³
Checksum/checksum-compressed-2048-14 0.000009500n ± ∞ ¹ 0.000009300n ± ∞ ¹ ~ (p=1.000 n=1) ²
Checksum/checksum-4096-14 0.00001060n ± ∞ ¹ 0.00001050n ± ∞ ¹ ~ (p=1.000 n=1) ²
Checksum/checksum-compressed-4096-14 0.00001570n ± ∞ ¹ 0.00001590n ± ∞ ¹ ~ (p=1.000 n=1) ²
Checksum/checksum-8192-14 0.00002110n ± ∞ ¹ 0.00001960n ± ∞ ¹ ~ (p=1.000 n=1) ²
Checksum/checksum-compressed-8192-14 0.00001960n ± ∞ ¹ 0.00002190n ± ∞ ¹ ~ (p=1.000 n=1) ²
Checksum/checksum-16384-14 0.00004000n ± ∞ ¹ 0.00003840n ± ∞ ¹ ~ (p=1.000 n=1) ²
Checksum/checksum-compressed-16384-14 0.00002500n ± ∞ ¹ 0.00002550n ± ∞ ¹ ~ (p=1.000 n=1) ²
Checksum/checksum-32768-14 0.00007310n ± ∞ ¹ 0.00007680n ± ∞ ¹ ~ (p=1.000 n=1) ²
Checksum/checksum-compressed-32768-14 0.00001480n ± ∞ ¹ 0.00001850n ± ∞ ¹ ~ (p=1.000 n=1) ²
Checksum/checksum-65536-14 0.0001350n ± ∞ ¹ 0.0001363n ± ∞ ¹ ~ (p=1.000 n=1) ²
Checksum/checksum-compressed-65536-14 0.000003300n ± ∞ ¹ 0.000004200n ± ∞ ¹ ~ (p=1.000 n=1) ²
Checksum/checksum-131072-14 0.0001757n ± ∞ ¹ 0.0002001n ± ∞ ¹ ~ (p=1.000 n=1) ²
Checksum/checksum-compressed-131072-14 0.0000003000n ± ∞ ¹ 0.0000004000n ± ∞ ¹ ~ (p=1.000 n=1) ²
Checksum/checksum-262144-14 0.0002299n ± ∞ ¹ 0.0001968n ± ∞ ¹ ~ (p=1.000 n=1) ²
Checksum/checksum-compressed-262144-14 0.0000003000n ± ∞ ¹ 0.0000002000n ± ∞ ¹ ~ (p=1.000 n=1) ²
Checksum/checksum-524288-14 0.0001927n ± ∞ ¹ 0.0002065n ± ∞ ¹ ~ (p=1.000 n=1) ²
Checksum/checksum-compressed-524288-14 0.0000003000n ± ∞ ¹ 0.0000003000n ± ∞ ¹ ~ (p=1.000 n=1) ³
Checksum/checksum-1048576-14 0.0002274n ± ∞ ¹ 0.0001977n ± ∞ ¹ ~ (p=1.000 n=1) ²
Checksum/checksum-compressed-1048576-14 0.0000004000n ± ∞ ¹ 0.0000003000n ± ∞ ¹ ~ (p=1.000 n=1) ²
geomean 0.000002206n 0.000002183n +6.66%
¹ need >= 6 samples for confidence interval at level 0.95
² need >= 4 samples to detect a difference at alpha level 0.05
³ all samples are equal
│ old.txt │ new.txt │
│ B/op │ B/op vs base │
Checksum/checksum-1-14 0.000 ± ∞ ¹ 0.000 ± ∞ ¹ ~ (p=1.000 n=1) ²
Checksum/checksum-compressed-1-14 0.000 ± ∞ ¹ 0.000 ± ∞ ¹ ~ (p=1.000 n=1) ²
Checksum/checksum-2-14 0.000 ± ∞ ¹ 0.000 ± ∞ ¹ ~ (p=1.000 n=1) ²
Checksum/checksum-compressed-2-14 0.000 ± ∞ ¹ 0.000 ± ∞ ¹ ~ (p=1.000 n=1) ²
Checksum/checksum-4-14 0.000 ± ∞ ¹ 0.000 ± ∞ ¹ ~ (p=1.000 n=1) ²
Checksum/checksum-compressed-4-14 0.000 ± ∞ ¹ 0.000 ± ∞ ¹ ~ (p=1.000 n=1) ²
Checksum/checksum-8-14 0.000 ± ∞ ¹ 0.000 ± ∞ ¹ ~ (p=1.000 n=1) ²
Checksum/checksum-compressed-8-14 0.000 ± ∞ ¹ 0.000 ± ∞ ¹ ~ (p=1.000 n=1) ²
Checksum/checksum-16-14 0.000 ± ∞ ¹ 0.000 ± ∞ ¹ ~ (p=1.000 n=1) ²
Checksum/checksum-compressed-16-14 0.000 ± ∞ ¹ 0.000 ± ∞ ¹ ~ (p=1.000 n=1) ²
Checksum/checksum-32-14 0.000 ± ∞ ¹ 0.000 ± ∞ ¹ ~ (p=1.000 n=1) ²
Checksum/checksum-compressed-32-14 0.000 ± ∞ ¹ 0.000 ± ∞ ¹ ~ (p=1.000 n=1) ²
Checksum/checksum-64-14 0.000 ± ∞ ¹ 0.000 ± ∞ ¹ ~ (p=1.000 n=1) ²
Checksum/checksum-compressed-64-14 0.000 ± ∞ ¹ 0.000 ± ∞ ¹ ~ (p=1.000 n=1) ²
Checksum/checksum-128-14 0.000 ± ∞ ¹ 0.000 ± ∞ ¹ ~ (p=1.000 n=1) ²
Checksum/checksum-compressed-128-14 0.000 ± ∞ ¹ 0.000 ± ∞ ¹ ~ (p=1.000 n=1) ²
Checksum/checksum-256-14 0.000 ± ∞ ¹ 0.000 ± ∞ ¹ ~ (p=1.000 n=1) ²
Checksum/checksum-compressed-256-14 0.000 ± ∞ ¹ 0.000 ± ∞ ¹ ~ (p=1.000 n=1) ²
Checksum/checksum-512-14 0.000 ± ∞ ¹ 0.000 ± ∞ ¹ ~ (p=1.000 n=1) ²
Checksum/checksum-compressed-512-14 0.000 ± ∞ ¹ 0.000 ± ∞ ¹ ~ (p=1.000 n=1) ²
Checksum/checksum-1024-14 0.000 ± ∞ ¹ 0.000 ± ∞ ¹ ~ (p=1.000 n=1) ²
Checksum/checksum-compressed-1024-14 0.000 ± ∞ ¹ 0.000 ± ∞ ¹ ~ (p=1.000 n=1) ²
Checksum/checksum-2048-14 0.000 ± ∞ ¹ 0.000 ± ∞ ¹ ~ (p=1.000 n=1) ²
Checksum/checksum-compressed-2048-14 0.000 ± ∞ ¹ 0.000 ± ∞ ¹ ~ (p=1.000 n=1) ²
Checksum/checksum-4096-14 0.000 ± ∞ ¹ 0.000 ± ∞ ¹ ~ (p=1.000 n=1) ²
Checksum/checksum-compressed-4096-14 0.000 ± ∞ ¹ 0.000 ± ∞ ¹ ~ (p=1.000 n=1) ²
Checksum/checksum-8192-14 0.000 ± ∞ ¹ 0.000 ± ∞ ¹ ~ (p=1.000 n=1) ²
Checksum/checksum-compressed-8192-14 0.000 ± ∞ ¹ 0.000 ± ∞ ¹ ~ (p=1.000 n=1) ²
Checksum/checksum-16384-14 0.000 ± ∞ ¹ 0.000 ± ∞ ¹ ~ (p=1.000 n=1) ²
Checksum/checksum-compressed-16384-14 0.000 ± ∞ ¹ 0.000 ± ∞ ¹ ~ (p=1.000 n=1) ²
Checksum/checksum-32768-14 0.000 ± ∞ ¹ 0.000 ± ∞ ¹ ~ (p=1.000 n=1) ²
Checksum/checksum-compressed-32768-14 0.000 ± ∞ ¹ 0.000 ± ∞ ¹ ~ (p=1.000 n=1) ²
Checksum/checksum-65536-14 0.000 ± ∞ ¹ 0.000 ± ∞ ¹ ~ (p=1.000 n=1) ²
Checksum/checksum-compressed-65536-14 0.000 ± ∞ ¹ 0.000 ± ∞ ¹ ~ (p=1.000 n=1) ²
Checksum/checksum-131072-14 0.000 ± ∞ ¹ 0.000 ± ∞ ¹ ~ (p=1.000 n=1) ²
Checksum/checksum-compressed-131072-14 0.000 ± ∞ ¹ 0.000 ± ∞ ¹ ~ (p=1.000 n=1) ²
Checksum/checksum-262144-14 0.000 ± ∞ ¹ 0.000 ± ∞ ¹ ~ (p=1.000 n=1) ²
Checksum/checksum-compressed-262144-14 0.000 ± ∞ ¹ 0.000 ± ∞ ¹ ~ (p=1.000 n=1) ²
Checksum/checksum-524288-14 0.000 ± ∞ ¹ 0.000 ± ∞ ¹ ~ (p=1.000 n=1) ²
Checksum/checksum-compressed-524288-14 0.000 ± ∞ ¹ 0.000 ± ∞ ¹ ~ (p=1.000 n=1) ²
Checksum/checksum-1048576-14 0.000 ± ∞ ¹ 0.000 ± ∞ ¹ ~ (p=1.000 n=1) ²
Checksum/checksum-compressed-1048576-14 0.000 ± ∞ ¹ 0.000 ± ∞ ¹ ~ (p=1.000 n=1) ²
geomean ³ +0.00% ³
¹ need >= 6 samples for confidence interval at level 0.95
² all samples are equal
³ summaries must be >0 to compute geomean
│ old.txt │ new.txt │
│ allocs/op │ allocs/op vs base │
Checksum/checksum-1-14 0.000 ± ∞ ¹ 0.000 ± ∞ ¹ ~ (p=1.000 n=1) ²
Checksum/checksum-compressed-1-14 0.000 ± ∞ ¹ 0.000 ± ∞ ¹ ~ (p=1.000 n=1) ²
Checksum/checksum-2-14 0.000 ± ∞ ¹ 0.000 ± ∞ ¹ ~ (p=1.000 n=1) ²
Checksum/checksum-compressed-2-14 0.000 ± ∞ ¹ 0.000 ± ∞ ¹ ~ (p=1.000 n=1) ²
Checksum/checksum-4-14 0.000 ± ∞ ¹ 0.000 ± ∞ ¹ ~ (p=1.000 n=1) ²
Checksum/checksum-compressed-4-14 0.000 ± ∞ ¹ 0.000 ± ∞ ¹ ~ (p=1.000 n=1) ²
Checksum/checksum-8-14 0.000 ± ∞ ¹ 0.000 ± ∞ ¹ ~ (p=1.000 n=1) ²
Checksum/checksum-compressed-8-14 0.000 ± ∞ ¹ 0.000 ± ∞ ¹ ~ (p=1.000 n=1) ²
Checksum/checksum-16-14 0.000 ± ∞ ¹ 0.000 ± ∞ ¹ ~ (p=1.000 n=1) ²
Checksum/checksum-compressed-16-14 0.000 ± ∞ ¹ 0.000 ± ∞ ¹ ~ (p=1.000 n=1) ²
Checksum/checksum-32-14 0.000 ± ∞ ¹ 0.000 ± ∞ ¹ ~ (p=1.000 n=1) ²
Checksum/checksum-compressed-32-14 0.000 ± ∞ ¹ 0.000 ± ∞ ¹ ~ (p=1.000 n=1) ²
Checksum/checksum-64-14 0.000 ± ∞ ¹ 0.000 ± ∞ ¹ ~ (p=1.000 n=1) ²
Checksum/checksum-compressed-64-14 0.000 ± ∞ ¹ 0.000 ± ∞ ¹ ~ (p=1.000 n=1) ²
Checksum/checksum-128-14 0.000 ± ∞ ¹ 0.000 ± ∞ ¹ ~ (p=1.000 n=1) ²
Checksum/checksum-compressed-128-14 0.000 ± ∞ ¹ 0.000 ± ∞ ¹ ~ (p=1.000 n=1) ²
Checksum/checksum-256-14 0.000 ± ∞ ¹ 0.000 ± ∞ ¹ ~ (p=1.000 n=1) ²
Checksum/checksum-compressed-256-14 0.000 ± ∞ ¹ 0.000 ± ∞ ¹ ~ (p=1.000 n=1) ²
Checksum/checksum-512-14 0.000 ± ∞ ¹ 0.000 ± ∞ ¹ ~ (p=1.000 n=1) ²
Checksum/checksum-compressed-512-14 0.000 ± ∞ ¹ 0.000 ± ∞ ¹ ~ (p=1.000 n=1) ²
Checksum/checksum-1024-14 0.000 ± ∞ ¹ 0.000 ± ∞ ¹ ~ (p=1.000 n=1) ²
Checksum/checksum-compressed-1024-14 0.000 ± ∞ ¹ 0.000 ± ∞ ¹ ~ (p=1.000 n=1) ²
Checksum/checksum-2048-14 0.000 ± ∞ ¹ 0.000 ± ∞ ¹ ~ (p=1.000 n=1) ²
Checksum/checksum-compressed-2048-14 0.000 ± ∞ ¹ 0.000 ± ∞ ¹ ~ (p=1.000 n=1) ²
Checksum/checksum-4096-14 0.000 ± ∞ ¹ 0.000 ± ∞ ¹ ~ (p=1.000 n=1) ²
Checksum/checksum-compressed-4096-14 0.000 ± ∞ ¹ 0.000 ± ∞ ¹ ~ (p=1.000 n=1) ²
Checksum/checksum-8192-14 0.000 ± ∞ ¹ 0.000 ± ∞ ¹ ~ (p=1.000 n=1) ²
Checksum/checksum-compressed-8192-14 0.000 ± ∞ ¹ 0.000 ± ∞ ¹ ~ (p=1.000 n=1) ²
Checksum/checksum-16384-14 0.000 ± ∞ ¹ 0.000 ± ∞ ¹ ~ (p=1.000 n=1) ²
Checksum/checksum-compressed-16384-14 0.000 ± ∞ ¹ 0.000 ± ∞ ¹ ~ (p=1.000 n=1) ²
Checksum/checksum-32768-14 0.000 ± ∞ ¹ 0.000 ± ∞ ¹ ~ (p=1.000 n=1) ²
Checksum/checksum-compressed-32768-14 0.000 ± ∞ ¹ 0.000 ± ∞ ¹ ~ (p=1.000 n=1) ²
Checksum/checksum-65536-14 0.000 ± ∞ ¹ 0.000 ± ∞ ¹ ~ (p=1.000 n=1) ²
Checksum/checksum-compressed-65536-14 0.000 ± ∞ ¹ 0.000 ± ∞ ¹ ~ (p=1.000 n=1) ²
Checksum/checksum-131072-14 0.000 ± ∞ ¹ 0.000 ± ∞ ¹ ~ (p=1.000 n=1) ²
Checksum/checksum-compressed-131072-14 0.000 ± ∞ ¹ 0.000 ± ∞ ¹ ~ (p=1.000 n=1) ²
Checksum/checksum-262144-14 0.000 ± ∞ ¹ 0.000 ± ∞ ¹ ~ (p=1.000 n=1) ²
Checksum/checksum-compressed-262144-14 0.000 ± ∞ ¹ 0.000 ± ∞ ¹ ~ (p=1.000 n=1) ²
Checksum/checksum-524288-14 0.000 ± ∞ ¹ 0.000 ± ∞ ¹ ~ (p=1.000 n=1) ²
Checksum/checksum-compressed-524288-14 0.000 ± ∞ ¹ 0.000 ± ∞ ¹ ~ (p=1.000 n=1) ²
Checksum/checksum-1048576-14 0.000 ± ∞ ¹ 0.000 ± ∞ ¹ ~ (p=1.000 n=1) ²
Checksum/checksum-compressed-1048576-14 0.000 ± ∞ ¹ 0.000 ± ∞ ¹ ~ (p=1.000 n=1) ²
geomean ³ +0.00% ³
¹ need >= 6 samples for confidence interval at level 0.95
² all samples are equal
³ summaries must be >0 to compute geomean
│ old.txt │
│ ns/op │
Checksum/checksum-2-14 0.000 ± ∞ ¹
¹ need >= 6 samples for confidence interval at level 0.95
Looks good to me:
- the code isn't using the serialization functions, which could call unsafe functions
- it's clear what the hash is actually doing
- I'm happy that there is no functional change
@happygiraffe Thanks.
I will let it stew in case someone has other comments.