mirror of
https://github.com/docker/cli.git
synced 2026-01-13 18:22:35 +03:00
The mountinfo parser implemented via `fmt.Sscanf()` is slower than the one using `strings.Split()` and `strconv.Atoi()`. This rewrite helps to speed it up to a factor of 8x, here is a result from go bench: > BenchmarkParsingScanf-4 300 22294112 ns/op > BenchmarkParsingSplit-4 3000 2780703 ns/op I tried other approaches, such as using `fmt.Sscanf()` for the first three (integer) fields and `strings.Split()` for the rest, but it slows things down considerably: > BenchmarkParsingMixed-4 1000 8827058 ns/op Note the old code uses `fmt.Sscanf`, when a linear search for '-' field, when a split for the last 3 fields. The new code relies on a single split. I have also added more comments to aid in future development. Finally, the test data is fixed to now have white space before the first field. Signed-off-by: Kir Kolyshkin <kolyshkin@gmail.com> Upstream-commit: c611f18a7f16d8aa878a5a5c7537d23a0937c40a Component: engine