Is there too much complicated tooling for your taste? Don't panic; it doesn't always have to be a profiler; there is a set of simpler techniques, which oftentimes can prove to be quite sufficient.
Manual instrumentation and benchmarks
Debug outputs
Sometimes, the simplest thing we can do is just to add some printfs reporting times spend in critical parts of the code as debug outputs (that is, they will disappear in your Release build). This is the simplest form of manual instrumentation we can have—no sophisticated output formats; just simple human-readable log lines.
We can use it in two ways: first, when investigating some incumbent performance problem, and, second, for an overview of the general timing...