Skip to content

Commit

Permalink
portlist: add BenchmarkGetListIncremental
Browse files Browse the repository at this point in the history
In contrast to BenchmarkGetList, this new BenchmarkGetListIncremental
acts like what happens in practice, remembering the previous run and
avoiding work that's already been done previously.

Currently:

    BenchmarkGetList
    BenchmarkGetList-8                           100          11011100 ns/op           68411 B/op       2211 allocs/op
    BenchmarkGetList-8                           100          11443410 ns/op           69073 B/op       2223 allocs/op
    BenchmarkGetList-8                           100          11217311 ns/op           68421 B/op       2197 allocs/op
    BenchmarkGetList-8                           100          11035559 ns/op           68801 B/op       2220 allocs/op
    BenchmarkGetList-8                           100          10921596 ns/op           69226 B/op       2225 allocs/op
    BenchmarkGetListIncremental
    BenchmarkGetListIncremental-8                168           7187217 ns/op            1192 B/op         28 allocs/op
    BenchmarkGetListIncremental-8                172           7004525 ns/op            1194 B/op         28 allocs/op
    BenchmarkGetListIncremental-8                162           7235889 ns/op            1221 B/op         29 allocs/op
    BenchmarkGetListIncremental-8                164           7035671 ns/op            1219 B/op         29 allocs/op
    BenchmarkGetListIncremental-8                174           7095448 ns/op            1114 B/op         27 allocs/op

Updates #5958

Change-Id: I1bd5a4b206df4173e2cb8e8a780429d9daa6ef1d
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
  • Loading branch information
bradfitz committed Oct 23, 2022
1 parent f36ddd9 commit 774fa72
Showing 1 changed file with 12 additions and 1 deletion.
13 changes: 12 additions & 1 deletion portlist/portlist_test.go
Expand Up @@ -195,12 +195,23 @@ func TestSameInodes(t *testing.T) {
}

func BenchmarkGetList(b *testing.B) {
benchmarkGetList(b, false)
}

func BenchmarkGetListIncremental(b *testing.B) {
benchmarkGetList(b, true)
}

func benchmarkGetList(b *testing.B, incremental bool) {
b.ReportAllocs()
var p Poller
for i := 0; i < b.N; i++ {
_, err := p.getList()
pl, err := p.getList()
if err != nil {
b.Fatal(err)
}
if incremental {
p.prev = pl
}
}
}

0 comments on commit 774fa72

Please sign in to comment.