Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

update to go1.18, and use strings.Cut #142

Merged
merged 5 commits into from
Jul 24, 2024

Conversation

thaJeztah
Copy link
Member

*: update minimum go version to go1.18

This allows us to start using some new features, like strings.Cut

mount: MergeTmpfsOptions : use strings.Cut

it's faster, and uses less allocations.

mountinfo: add "toInt()" utility

mountinfo: GetMountsFromReader: use strings.Cut

It's faster, and reduces 410 allocations (1976 -> 1566).

Before:

go test -v -test.benchmem -count=10 -run ^$ -bench BenchmarkParseMountinfo .
go: downloading golang.org/x/sys v0.1.0
goos: linux
goarch: arm64
pkg: github.com/moby/sys/mountinfo
BenchmarkParseMountinfo
BenchmarkParseMountinfo-10        4405    283442 ns/op  245426 B/op    1976 allocs/op
BenchmarkParseMountinfo-10        4180    258441 ns/op  245425 B/op    1976 allocs/op
BenchmarkParseMountinfo-10        4146    258770 ns/op  245425 B/op    1976 allocs/op
BenchmarkParseMountinfo-10        4180    259924 ns/op  245425 B/op    1976 allocs/op
BenchmarkParseMountinfo-10        4162    263537 ns/op  245425 B/op    1976 allocs/op
BenchmarkParseMountinfo-10        4218    261200 ns/op  245425 B/op    1976 allocs/op
BenchmarkParseMountinfo-10        4746    259271 ns/op  245425 B/op    1976 allocs/op
BenchmarkParseMountinfo-10        4362    265330 ns/op  245425 B/op    1976 allocs/op
BenchmarkParseMountinfo-10        4454    263110 ns/op  245425 B/op    1976 allocs/op
BenchmarkParseMountinfo-10        4134    266847 ns/op  245425 B/op    1976 allocs/op
PASS
ok  github.com/moby/sys/mountinfo 11.653s

After

go test -v -test.benchmem -count=10 -run ^$ -bench BenchmarkParseMountinfo .
go: downloading golang.org/x/sys v0.1.0
goos: linux
goarch: arm64
pkg: github.com/moby/sys/mountinfo
BenchmarkParseMountinfo
BenchmarkParseMountinfo-10        4544    262155 ns/op  225746 B/op    1566 allocs/op
BenchmarkParseMountinfo-10        4447    266108 ns/op  225745 B/op    1566 allocs/op
BenchmarkParseMountinfo-10        4522    246329 ns/op  225745 B/op    1566 allocs/op
BenchmarkParseMountinfo-10        4311    249786 ns/op  225745 B/op    1566 allocs/op
BenchmarkParseMountinfo-10        4612    250989 ns/op  225745 B/op    1566 allocs/op
BenchmarkParseMountinfo-10        4588    249702 ns/op  225745 B/op    1566 allocs/op
BenchmarkParseMountinfo-10        4342    247774 ns/op  225745 B/op    1566 allocs/op
BenchmarkParseMountinfo-10        4530    246963 ns/op  225745 B/op    1566 allocs/op
BenchmarkParseMountinfo-10        4690    248594 ns/op  225745 B/op    1566 allocs/op
BenchmarkParseMountinfo-10        4455    254278 ns/op  225745 B/op    1566 allocs/op
PASS
ok  github.com/moby/sys/mountinfo 11.660s

mountinfo: GetMountsFromReader: inline some assignments

This allows us to start using some new features, like strings.Cut

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
it's faster, and uses less allocations.

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
It's faster, and reduces 410 allocations (1976 -> 1566).

Before:

    go test -v -test.benchmem -count=10 -run ^$ -bench BenchmarkParseMountinfo .
    go: downloading golang.org/x/sys v0.1.0
    goos: linux
    goarch: arm64
    pkg: github.com/moby/sys/mountinfo
    BenchmarkParseMountinfo
    BenchmarkParseMountinfo-10        4405    283442 ns/op  245426 B/op    1976 allocs/op
    BenchmarkParseMountinfo-10        4180    258441 ns/op  245425 B/op    1976 allocs/op
    BenchmarkParseMountinfo-10        4146    258770 ns/op  245425 B/op    1976 allocs/op
    BenchmarkParseMountinfo-10        4180    259924 ns/op  245425 B/op    1976 allocs/op
    BenchmarkParseMountinfo-10        4162    263537 ns/op  245425 B/op    1976 allocs/op
    BenchmarkParseMountinfo-10        4218    261200 ns/op  245425 B/op    1976 allocs/op
    BenchmarkParseMountinfo-10        4746    259271 ns/op  245425 B/op    1976 allocs/op
    BenchmarkParseMountinfo-10        4362    265330 ns/op  245425 B/op    1976 allocs/op
    BenchmarkParseMountinfo-10        4454    263110 ns/op  245425 B/op    1976 allocs/op
    BenchmarkParseMountinfo-10        4134    266847 ns/op  245425 B/op    1976 allocs/op
    PASS
    ok  github.com/moby/sys/mountinfo 11.653s

After

    go test -v -test.benchmem -count=10 -run ^$ -bench BenchmarkParseMountinfo .
    go: downloading golang.org/x/sys v0.1.0
    goos: linux
    goarch: arm64
    pkg: github.com/moby/sys/mountinfo
    BenchmarkParseMountinfo
    BenchmarkParseMountinfo-10        4544    262155 ns/op  225746 B/op    1566 allocs/op
    BenchmarkParseMountinfo-10        4447    266108 ns/op  225745 B/op    1566 allocs/op
    BenchmarkParseMountinfo-10        4522    246329 ns/op  225745 B/op    1566 allocs/op
    BenchmarkParseMountinfo-10        4311    249786 ns/op  225745 B/op    1566 allocs/op
    BenchmarkParseMountinfo-10        4612    250989 ns/op  225745 B/op    1566 allocs/op
    BenchmarkParseMountinfo-10        4588    249702 ns/op  225745 B/op    1566 allocs/op
    BenchmarkParseMountinfo-10        4342    247774 ns/op  225745 B/op    1566 allocs/op
    BenchmarkParseMountinfo-10        4530    246963 ns/op  225745 B/op    1566 allocs/op
    BenchmarkParseMountinfo-10        4690    248594 ns/op  225745 B/op    1566 allocs/op
    BenchmarkParseMountinfo-10        4455    254278 ns/op  225745 B/op    1566 allocs/op
    PASS
    ok  github.com/moby/sys/mountinfo 11.660s

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
@AkihiroSuda AkihiroSuda merged commit 617cda3 into moby:main Jul 24, 2024
19 checks passed
@thaJeztah thaJeztah deleted the use_strings_cut branch July 24, 2024 08:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants