I'm sure you've seen this before.
I find it helpful to distinguish two different objectives:
Measuring how long various things take, so you can make a presentation. As part of this presentation you might say something like "It looks like the frob routine is taking too much time, or being called too many times, suggesting we try to speed that up or call it less."
Pinpointing precise lines of code or instructions that are 1) not necessary, and 2) worth fixing, in the sense that they will save a good fraction of execution time.
I suspect the overall goal is the latter.
But to do that, measuring is a very indirect approach.
Instead, you could take advantage of the fact that, if something's wasting enough time to be worth looking at, you can simply catch it by taking snapshots of the program's state.
So you're not measuring in order to find what's taking time.
The very fact that it takes time is what exposes it, unambiguously, with no suggesting involved.
Zoom is a profiler that works this way.
So is LTProf.
I built one once, but frankly I think the manual method, while more work, is more effective, because it makes me think harder about why the program's doing what it's doing.