Pre-size net.Buffers
This leads to a further reduction in allocations per call. 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 12611158 1445 ns/op 221 B/op 7 allocs/op PASS ok src.lwithers.me.uk/go/journal 19.673s 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 13613377 1329 ns/op 149 B/op 5 allocs/op PASS ok src.lwithers.me.uk/go/journal 19.435s
This commit is contained in:
parent
d3666c9152
commit
c579349c05
|
@ -4,6 +4,7 @@ import (
|
||||||
"encoding/binary"
|
"encoding/binary"
|
||||||
"io"
|
"io"
|
||||||
"net"
|
"net"
|
||||||
|
"slices"
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
|
@ -19,6 +20,7 @@ var (
|
||||||
// atomic, and this function is safe to use across goroutines. Otherwise,
|
// atomic, and this function is safe to use across goroutines. Otherwise,
|
||||||
// writes may be interleaved.
|
// writes may be interleaved.
|
||||||
func WireWrite(buf *net.Buffers, w io.Writer, attrs []Attr) error {
|
func WireWrite(buf *net.Buffers, w io.Writer, attrs []Attr) error {
|
||||||
|
*buf = slices.Grow(*buf, len(*buf)+len(attrs)*4)
|
||||||
for i := range attrs {
|
for i := range attrs {
|
||||||
key := attrs[i].Key.key
|
key := attrs[i].Key.key
|
||||||
if key == "" {
|
if key == "" {
|
||||||
|
|
Loading…
Reference in New Issue