Mar 2, 2026 · kyo8.dev
Go + Lambda cold starts: what actually moved the needle
Benchmarking binary size, init code, and provisioned concurrency on a real API.
I measured cold starts on the actual Project API instead of a synthetic benchmark, changing one variable at a time: binary size, work done in init(), memory allocation, and finally provisioned concurrency.
Trimming init() work and cutting the binary down with build flags shaved a consistent chunk off cold start latency for free. Provisioned concurrency removed cold starts entirely but only made sense once traffic was steady enough to justify the always-on cost — for a low-traffic portfolio API, it wasn't worth it.