Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
tags: Aggressively inline tag serialization small tag sets (#72)
* tags: Aggressively inline tag serialization for four and less tags This improves runtime by roughly 25% and reduces allocs by roughly 70%. Benchmark results: ``` benchmark old ns/op new ns/op delta BenchmarkSerializeTags_Four-8 341 262 -23.17% benchmark old allocs new allocs delta BenchmarkSerializeTags_Four-8 3 1 -66.67% benchmark old bytes new bytes delta BenchmarkSerializeTags_Four-8 224 64 -71.43% ``` * tags: test againse reference implementation * tags: remove commented out code * tags: Benchmark serializeTags for 1..10 tags The goal here is to highlight the improvements made for serializing small tag sets (1..4). Benchmark results: benchmark old ns/op new ns/op delta BenchmarkSerializeTags_One-8 97.3 92.7 -4.73% BenchmarkSerializeTags_Two-8 158 145 -8.23% BenchmarkSerializeTags_Three-8 308 205 -33.44% BenchmarkSerializeTags_Four-8 367 272 -25.89% BenchmarkSerializeTags_Five-8 448 437 -2.46% BenchmarkSerializeTags_Six-8 518 498 -3.86% BenchmarkSerializeTags_Seven-8 611 597 -2.29% BenchmarkSerializeTags_Eight-8 682 649 -4.84% BenchmarkSerializeTags_Nine-8 833 777 -6.72% BenchmarkSerializeTags_Ten-8 949 874 -7.90% benchmark old allocs new allocs delta BenchmarkSerializeTags_One-8 1 1 +0.00% BenchmarkSerializeTags_Two-8 1 1 +0.00% BenchmarkSerializeTags_Three-8 3 1 -66.67% BenchmarkSerializeTags_Four-8 3 1 -66.67% BenchmarkSerializeTags_Five-8 3 3 +0.00% BenchmarkSerializeTags_Six-8 3 3 +0.00% BenchmarkSerializeTags_Seven-8 3 3 +0.00% BenchmarkSerializeTags_Eight-8 3 3 +0.00% BenchmarkSerializeTags_Nine-8 3 3 +0.00% BenchmarkSerializeTags_Ten-8 3 3 +0.00% benchmark old bytes new bytes delta BenchmarkSerializeTags_One-8 32 32 +0.00% BenchmarkSerializeTags_Two-8 32 32 +0.00% BenchmarkSerializeTags_Three-8 176 48 -72.73% BenchmarkSerializeTags_Four-8 224 64 -71.43% BenchmarkSerializeTags_Five-8 272 272 +0.00% BenchmarkSerializeTags_Six-8 304 304 +0.00% BenchmarkSerializeTags_Seven-8 352 352 +0.00% BenchmarkSerializeTags_Eight-8 400 400 +0.00% BenchmarkSerializeTags_Nine-8 448 448 +0.00% BenchmarkSerializeTags_Ten-8 480 480 +0.00% * tags: remove BenchmarkSerializeTags as it is now redundant It is the same as BenchmarkSerializeTags_Five() * tags: use B.Run() for BenchmarkSerializeTags 1..10 * tags: test the network sort used for small tag sets
- Loading branch information