From d25ba02fee666e696a0639bfef4525f2c2157c2a Mon Sep 17 00:00:00 2001 From: Kevin Krakauer Date: Wed, 13 Mar 2024 15:23:53 -0700 Subject: [PATCH] netstack: pre-allocate slices in PacketBuffer.AsSlices() PiperOrigin-RevId: 615561646 --- pkg/tcpip/stack/packet_buffer.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pkg/tcpip/stack/packet_buffer.go b/pkg/tcpip/stack/packet_buffer.go index 82b042b97..e49cc613f 100644 --- a/pkg/tcpip/stack/packet_buffer.go +++ b/pkg/tcpip/stack/packet_buffer.go @@ -280,7 +280,8 @@ func (pk *PacketBuffer) Data() PacketData { // Note that AsSlices can allocate a lot. In hot paths it may be preferable to // iterate over a PacketBuffer's data via AsViewList. func (pk *PacketBuffer) AsSlices() [][]byte { - var views [][]byte + vl := pk.buf.AsViewList() + views := make([][]byte, 0, vl.Len()) offset := pk.headerOffset() pk.buf.SubApply(offset, int(pk.buf.Size())-offset, func(v *buffer.View) { views = append(views, v.AsSlice())