Open kbatyr opened 1 year ago
Refactor goflow package to escape allocations while parsing NetFlow/IPFIX packets. Benchmark results before refactoring:
goos: linux goarch: amd64 cpu: Intel(R) Core(TM) i7-10510U CPU @ 1.80GHz BenchmarkNetFlow2-8 54494 22757 ns/op 15512 B/op 400 allocs/op
And after refactoring:
goos: linux goarch: amd64 pkg: github.com/cloudflare/goflow/v3/parsers cpu: Intel(R) Core(TM) i7-10510U CPU @ 1.80GHz BenchmarkNetFlow1-8 2067685 529.6 ns/op 194 B/op 6 allocs/op BenchmarkNetFlow2-8 313855 3765 ns/op 128 B/op 4 allocs/op BenchmarkNetFlow3-8 377473 3141 ns/op 0 B/op 0 allocs/op BenchmarkNetFlowIPFix1-8 1987146 571.7 ns/op 32 B/op 1 allocs/op BenchmarkNetFlowIPFix2-8 3976148 277.8 ns/op 64 B/op 1 allocs/op BenchmarkNetFlowIPFix3-8 3392520 306.3 ns/op 0 B/op 0 allocs/op PASS ok github.com/cloudflare/goflow/v3/parsers 10.248s
P.S. Cases with allocations occurs when we get new template or in error cases (template not found, etc.) by calling NewError().
Refactor goflow package to escape allocations while parsing NetFlow/IPFIX packets. Benchmark results before refactoring:
And after refactoring:
P.S. Cases with allocations occurs when we get new template or in error cases (template not found, etc.) by calling NewError().