pprof is a profiling visualization and analysis tool that ingests profiles in the profile.proto format and generates human-readable and graph-based reports. It supports multiple profile types (CPU, heap, allocations, contention, etc.) and can present data as text tables, call graphs (via Graphviz/dot), flame graphs, and interactive web UIs. The tool helps developers find hot paths, quantify resource usage, and compare profiles across runs to validate performance changes. It is widely used in Go but also has bindings and exporters for other ecosystems, and the repository includes a Go package for reading and writing profiles programmatically. The pprof command can operate on local files or fetch from targets exposing profiling endpoints, supporting iterative, production-oriented workflows. Its design and proto schema make it a lingua franca for profilers that want to interoperate across languages and runtimes.
Features
- Reads profile.proto and generates text and graph reports
- Call graphs, flame graphs, and interactive web UI
- Supports CPU, heap, allocation, contention and more
- Local file analysis and remote fetch from profiling endpoints
- Go package for parsing and emitting profiles programmatically
- Differential comparisons to evaluate performance changes