Laurence Withers
d3666c9152
If the []Attr slice passed to Conn.Entry was used in several concurrent calls, and it had sufficient capacity that append()ing to it succeeded without reallocating the slice, then a data race would exist. Fix this, and fix the efficiency gotcha which expected the attribute slice to have additional capacity, by instead always constructing a new final slice of []Attr and using a sync.Pool to avoid reallocating them. Fixes go test -race, and improves the benchmark. Before: goos: linux goarch: amd64 pkg: src.lwithers.me.uk/go/journal cpu: 11th Gen Intel(R) Core(TM) i5-1135G7 @ 2.40GHz BenchmarkEntry-8 8345163 2139 ns/op 848 B/op 15 allocs/op PASS ok src.lwithers.me.uk/go/journal 20.034s After: goos: linux goarch: amd64 pkg: src.lwithers.me.uk/go/journal cpu: 11th Gen Intel(R) Core(TM) i5-1135G7 @ 2.40GHz BenchmarkEntry-8 12611158 1445 ns/op 221 B/op 7 allocs/op PASS ok src.lwithers.me.uk/go/journal 19.673s |
||
---|---|---|
LICENSE | ||
README.md | ||
attr.go | ||
attr_key.go | ||
attr_key_test.go | ||
attr_test.go | ||
conn.go | ||
conn_test.go | ||
global.go | ||
go.mod | ||
priority.go | ||
wire_proto.go | ||
wire_proto_test.go |
README.md
journal
Native Go output to the systemd journal socket.