Skip to content

Commit 5e7b724

Browse files
authored
Don't invoce r.log() if not r.debug (#1110)
Profiling shows that up to 40% of our allocations happen in r.markRead(): just to allocate a slice to pass the "remain" arg, which will be discarded because we don't run with r.debug=true. This makes the code slightly verbose, having to check the debug mode before invoking r.log(), but it's a huge difference in high-throughput applications. Signed-off-by: Oleg Zaytsev <mail@olegzaytsev.com>
1 parent 8a66e58 commit 5e7b724

File tree

1 file changed

+19
-9
lines changed

1 file changed

+19
-9
lines changed

message_reader.go

Lines changed: 19 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,9 @@ func (r *messageSetReader) readMessageV1(min int64, key readBytesFunc, val readB
159159
if codec, err = r.header.compression(); err != nil {
160160
return
161161
}
162-
r.log("Reading with codec=%T", codec)
162+
if r.debug {
163+
r.log("Reading with codec=%T", codec)
164+
}
163165
if codec != nil {
164166
// discard next four bytes...will be -1 to indicate null key
165167
if err = r.discardN(4); err != nil {
@@ -352,14 +354,18 @@ func (r *messageSetReader) markRead() {
352354
}
353355
r.count--
354356
r.unwindStack()
355-
r.log("Mark read remain=%d", r.remain)
357+
if r.debug {
358+
r.log("Mark read remain=%d", r.remain)
359+
}
356360
}
357361

358362
func (r *messageSetReader) unwindStack() {
359363
for r.count == 0 {
360364
if r.remain == 0 {
361365
if r.parent != nil {
362-
r.log("Popped reader stack")
366+
if r.debug {
367+
r.log("Popped reader stack")
368+
}
363369
r.readerStack = r.parent
364370
continue
365371
}
@@ -426,7 +432,9 @@ func (r *messageSetReader) readHeader() (err error) {
426432
// Set arbitrary non-zero length so that we always assume the
427433
// message is truncated since bytes remain.
428434
r.lengthRemain = 1
429-
r.log("Read v0 header with offset=%d len=%d magic=%d attributes=%d", r.header.firstOffset, r.header.length, r.header.magic, r.header.v1.attributes)
435+
if r.debug {
436+
r.log("Read v0 header with offset=%d len=%d magic=%d attributes=%d", r.header.firstOffset, r.header.length, r.header.magic, r.header.v1.attributes)
437+
}
430438
case 1:
431439
r.header.crc = crcOrLeaderEpoch
432440
if err = r.readInt8(&r.header.v1.attributes); err != nil {
@@ -439,7 +447,9 @@ func (r *messageSetReader) readHeader() (err error) {
439447
// Set arbitrary non-zero length so that we always assume the
440448
// message is truncated since bytes remain.
441449
r.lengthRemain = 1
442-
r.log("Read v1 header with remain=%d offset=%d magic=%d and attributes=%d", r.remain, r.header.firstOffset, r.header.magic, r.header.v1.attributes)
450+
if r.debug {
451+
r.log("Read v1 header with remain=%d offset=%d magic=%d and attributes=%d", r.remain, r.header.firstOffset, r.header.magic, r.header.v1.attributes)
452+
}
443453
case 2:
444454
r.header.v2.leaderEpoch = crcOrLeaderEpoch
445455
if err = r.readInt32(&r.header.crc); err != nil {
@@ -472,7 +482,9 @@ func (r *messageSetReader) readHeader() (err error) {
472482
r.count = int(r.header.v2.count)
473483
// Subtracts the header bytes from the length
474484
r.lengthRemain = int(r.header.length) - 49
475-
r.log("Read v2 header with count=%d offset=%d len=%d magic=%d attributes=%d", r.count, r.header.firstOffset, r.header.length, r.header.magic, r.header.v2.attributes)
485+
if r.debug {
486+
r.log("Read v2 header with count=%d offset=%d len=%d magic=%d attributes=%d", r.count, r.header.firstOffset, r.header.length, r.header.magic, r.header.v2.attributes)
487+
}
476488
default:
477489
err = r.header.badMagic()
478490
return
@@ -521,9 +533,7 @@ func (r *messageSetReader) readBytesWith(fn readBytesFunc) (err error) {
521533
}
522534

523535
func (r *messageSetReader) log(msg string, args ...interface{}) {
524-
if r.debug {
525-
log.Printf("[DEBUG] "+msg, args...)
526-
}
536+
log.Printf("[DEBUG] "+msg, args...)
527537
}
528538

529539
func extractOffset(base int64, msgSet []byte) (offset int64, err error) {

0 commit comments

Comments
 (0)