Types of profilers

The problem is, as we mentioned, we don't know what the program, the operating system or the hardware are exactly doing, and how much time each of them needs. So, we have to obtain this information somehow. The process of doing so is called profiling (creating the program's execution profile), and the tools we use to do that are called profilers. There are the following general approaches used to obtain performance data:

  • Program instrumentation
  • Runtime sampling
  • Reading hardware or operating system counters

Let's look at each of these approaches in more detail.