Skip to content

Commit ea8421b

Browse files
authored
Use a bufio.Reader in proxycore.Conn (#80)
After profiling I noticed that significant time is spent in the read system call reading a single byte for the CQL native protocol header. It's possible that we can eliminate some system calls by using a buffered reader.
1 parent 7a02afd commit ea8421b

File tree

1 file changed

+3
-1
lines changed

1 file changed

+3
-1
lines changed

proxycore/conn.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ type Conn struct {
4141
err error
4242
recv Receiver
4343
writer *bufio.Writer
44+
reader *bufio.Reader
4445
mu *sync.Mutex
4546
}
4647

@@ -95,6 +96,7 @@ func NewConn(conn net.Conn, recv Receiver) *Conn {
9596
conn: conn,
9697
recv: recv,
9798
writer: bufio.NewWriterSize(conn, MaxCoalesceSize),
99+
reader: bufio.NewReader(conn),
98100
closed: make(chan struct{}),
99101
messages: make(chan Sender, MaxMessages),
100102
mu: &sync.Mutex{},
@@ -109,7 +111,7 @@ func (c *Conn) Start() {
109111
func (c *Conn) read() {
110112
done := false
111113
for !done {
112-
done = c.checkErr(c.recv.Receive(c.conn))
114+
done = c.checkErr(c.recv.Receive(c.reader))
113115
}
114116
c.recv.Closing(c.Err())
115117
}

0 commit comments

Comments
 (0)