Skip to content

Commit f1a6a33

Browse files
author
Noam Preil
committed
optimization: MessageReader: use a static 4-byte buffer for header reads
Avoids an allocation per Message call.
1 parent 0273ffe commit f1a6a33

File tree

1 file changed

+2
-1
lines changed

1 file changed

+2
-1
lines changed

arrow/ipc/message.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,7 @@ type messageReader struct {
150150
msg *Message
151151

152152
mem memory.Allocator
153+
header [4]byte
153154
}
154155

155156
// NewMessageReader returns a reader that reads messages from an input stream.
@@ -188,7 +189,7 @@ func (r *messageReader) Release() {
188189
// underlying stream.
189190
// It is valid until the next call to Message.
190191
func (r *messageReader) Message() (*Message, error) {
191-
buf := make([]byte, 4)
192+
buf := r.header[:]
192193
_, err := io.ReadFull(r.r, buf)
193194
if err != nil {
194195
return nil, fmt.Errorf("arrow/ipc: could not read continuation indicator: %w", err)

0 commit comments

Comments
 (0)