If you are confused, this is the majority of profiler providers .
The first thing to understand is that the programs are not slow, because they have slow parts (bottlenecks). They are slow because they do more than they need. They have time to drain.
It is like a leap. The bottleneck will be the bottleneck on the track where horses must accumulate and slow down. The drainage of time will be similar to another track, merged with the first, in which the horses wander and are forced to travel an extra distance. Then there may be another track merged with this, and another, etc.
A function call that could have been avoided is an example of a time leak.
Here, how I find the time of drains. It is simple and language independent. You can even do this with a simple tool like jStack.
The manufacturers of profilers understand well, but they are confused by the confusion of concepts.
For example, "where is the time spent." If this means “where the program counter is most often found”, it looks like the horse is in the wrong racetrack. You could try shortening this racetrack, but the real problem is that the horse should not even be there. that is, a function call that should be avoided.
Such as "statistical measurement accuracy." Do you need to measure how long a horse takes to get around the wrong race track to find out about it at the wrong racetrack? No, you just need to take a snapshot (sample stack). The longer this takes place on the wrong track, the greater the likelihood that you will see it. If you see him twice, you know what the problem is.
For example, call it "CPU Profile", which is a pretext to ignore the I / O time. Sometimes leak times are unnecessary I / O that you did not know about. It would be like a horse stopping to lay on a bag of oats. If you can take a picture while the horse is running, you will never notice. You would only notice that the time was suspiciously long.
There are more where they came from ...