Profiling & Bottleneck Analysis
Measure before you change anything — otherwise it's a guess with a budget.
- A written baseline: throughput, response times, batch durations, and today's cost
- Application profiling and request tracing down to the specific slow call
- Wait statistics and OS counters — CPU, memory, disk queue depth, network
- N+1 queries, chatty interfaces, and exhausted connection pools found by evidence
- Memory pressure and GC pauses separated from a genuine shortage of CPU
- Profilers matched to the runtime — py-spy for Python, Flight Recorder for Java, PerfView for C# and .NET, pprof for Go, perf for C++ and Rust
Case studies slowness flagged before anyone walks over to report it · a logo sent once per printer instead of on every print