A Go publication by Nolan Keir

Go, beneath
the surface.

Deep dives into the Go runtime, concurrency, performance, and the trade-offs behind clean abstractions.

Latest

All articles
  1. The 30% is 46%, and it stops dead at 80 bytes

    Go 1.27's size-specialised allocation is worth up to 46% on the pointer-containing path, not the 30% announced — and from 96 bytes up it is worth nothing.

    Performance and measurement
  2. Green Tea cut my GC time 63%, and raised it 39%

    One heap shape lost 63% of its collector CPU and gained 14% throughput. Another gained 39% collector CPU and lost nothing. Same flag, same binary pair, same machine.

    Runtime internals
  3. The GOGC I set next to GOMEMLIMIT never fired

    GOGC=100 with a 256 MiB limit produced exactly what GOGC=off produced: same collections, same CPU share, same throughput. The tighter rule binds, the other goes quiet.

    Runtime internals
  4. A 404 from net/http costs 62 allocations

    A static route through net/http's mux costs 85.6 ns and nothing on the heap. A path that matches no pattern costs 2125.5 ns and 62 allocations.

    Ecosystem and tooling

Series

All series

Topics

Every topic

Arrow keys to move, Enter to open.