help understanding bench mark

84 views
Skip to first unread message

karthick ayyapillai (கார்த்திக்)

unread,
Jul 26, 2025, 12:58:05 PMJul 26
to golang-nuts
hi,
I am using a simple queue and bench marking it.
queue.go = implementation of the queue.
queue_test.go = benchmarking
profile002.pdf= pprof tool mem analysis
the command used to run the bench mark is
`go test -run='^#' -bench=BenchmarkAdd -benchmem -count=10`

results :
```
go test -run='^#' -bench=BenchmarkAdd -benchmem -count=10
goos: linux
goarch: amd64
pkg: queue-middleware/queue
cpu: Intel(R) Core(TM) i7-10510U CPU @ 1.80GHz
BenchmarkAdd-8          78255547                15.13 ns/op            0 B/op          0 allocs/op
--- BENCH: BenchmarkAdd-8
    queue_test.go:36: size:1
    queue_test.go:36: size:5
BenchmarkAdd-8          86375668                13.84 ns/op            0 B/op          0 allocs/op
--- BENCH: BenchmarkAdd-8
    queue_test.go:36: size:1
    queue_test.go:36: size:5
BenchmarkAdd-8          91471299                13.00 ns/op            0 B/op          0 allocs/op
--- BENCH: BenchmarkAdd-8
    queue_test.go:36: size:1
    queue_test.go:36: size:5
BenchmarkAdd-8          87612523                12.70 ns/op            0 B/op          0 allocs/op
--- BENCH: BenchmarkAdd-8
    queue_test.go:36: size:1
    queue_test.go:36: size:5
BenchmarkAdd-8          93454760                12.76 ns/op            0 B/op          0 allocs/op
--- BENCH: BenchmarkAdd-8
    queue_test.go:36: size:1
    queue_test.go:36: size:5
BenchmarkAdd-8          91850235                12.75 ns/op            0 B/op          0 allocs/op
--- BENCH: BenchmarkAdd-8
    queue_test.go:36: size:1
    queue_test.go:36: size:5
BenchmarkAdd-8          97128108                13.36 ns/op            0 B/op          0 allocs/op
--- BENCH: BenchmarkAdd-8
    queue_test.go:36: size:1
    queue_test.go:36: size:5
BenchmarkAdd-8          93765214                12.94 ns/op            0 B/op          0 allocs/op
--- BENCH: BenchmarkAdd-8
    queue_test.go:36: size:1
    queue_test.go:36: size:5
BenchmarkAdd-8          86242954                13.07 ns/op            0 B/op          0 allocs/op
--- BENCH: BenchmarkAdd-8
    queue_test.go:36: size:1
    queue_test.go:36: size:5
BenchmarkAdd-8          88524364                12.76 ns/op            0 B/op          0 allocs/op
--- BENCH: BenchmarkAdd-8
    queue_test.go:36: size:1
    queue_test.go:36: size:5
PASS
ok      queue-middleware/queue  11.831s
```
my understanding is
- 0B/op = no allocation done
- 0 allocs/op = no allocation per operation

Does this mean the allocation is zero for the `Add` operation?

generally,  when you create queue it allocates memory in heap, will it not be reported in `benchmem`?


profile002.pdf
queue.go
queue_test.go

robert engels

unread,
Jul 26, 2025, 1:33:04 PMJul 26
to "karthick ayyapillai (கார்த்திக்)", golang-nuts
Your benchmark code is broken, try


func BenchmarkAdd(b *testing.B) {
q = New(100000)
for _ = range b.N {
q.Add(1)
}
}

which reports:

Running tool: /usr/local/bin/go test -benchmem -run=^$ -bench ^BenchmarkAdd$ example.com/queue

goos: darwin
goarch: amd64
cpu: Intel(R) Core(TM) i7-6700K CPU @ 4.00GHz
=== RUN   BenchmarkAdd
BenchmarkAdd
BenchmarkAdd-8          25188489                47.18 ns/op           16 B/op          1 allocs/op
PASS
ok      example.com/queue       1.363s

--
You received this message because you are subscribed to the Google Groups "golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts...@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/golang-nuts/42c18d81-66bc-4616-9817-77195bbadeb3n%40googlegroups.com.
<profile002.pdf><queue.go><queue_test.go>

Reply all
Reply to author
Forward
0 new messages