moby--moby/pkg/mount
Kir Kolyshkin c611f18a7f pkg/mount/mountinfo_linux: parser speed up
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>
2018-04-19 14:49:42 -07:00
..
flags.go Add canonical import comment 2018-02-05 16:51:57 -05:00
flags_freebsd.go Add canonical import comment 2018-02-05 16:51:57 -05:00
flags_linux.go Add canonical import comment 2018-02-05 16:51:57 -05:00
flags_unsupported.go Add canonical import comment 2018-02-05 16:51:57 -05:00
mount.go getSourceMount(): simplify 2018-04-19 14:49:17 -07:00
mount_unix_test.go pkg/mount: implement/use filter for mountinfo parsing 2018-04-19 14:48:09 -07:00
mounter_freebsd.go Add canonical import comment 2018-02-05 16:51:57 -05:00
mounter_linux.go Add canonical import comment 2018-02-05 16:51:57 -05:00
mounter_linux_test.go pkg/mount: implement/use filter for mountinfo parsing 2018-04-19 14:48:09 -07:00
mounter_unsupported.go Add canonical import comment 2018-02-05 16:51:57 -05:00
mountinfo.go pkg/mount: use sort.Slice 2018-03-06 12:46:58 -08:00
mountinfo_freebsd.go pkg/mount: implement/use filter for mountinfo parsing 2018-04-19 14:48:09 -07:00
mountinfo_linux.go pkg/mount/mountinfo_linux: parser speed up 2018-04-19 14:49:42 -07:00
mountinfo_linux_test.go pkg/mount/mountinfo_linux: parser speed up 2018-04-19 14:49:42 -07:00
mountinfo_unsupported.go pkg/mount: implement/use filter for mountinfo parsing 2018-04-19 14:48:09 -07:00
mountinfo_windows.go pkg/mount: implement/use filter for mountinfo parsing 2018-04-19 14:48:09 -07:00
sharedsubtree_linux.go Add canonical import comment 2018-02-05 16:51:57 -05:00
sharedsubtree_linux_test.go pkg/mount unit tests: skip some test under non-root 2018-03-06 12:37:27 -08:00