1. A method performed by data processing apparatus, the method comprising: receiving a plurality of instructions of an instrumented application, where the plurality of instructions comprise first instructions from an application and second instructions from a profiler that instruments the application with the second instructions to generate the instrumented application, the instrumented application being a functionally-equivalent version of the application; identifying, for each of the instructions in the plurality of instructions, a respective prefix from prefixes based on a category of the respective instruction, wherein at least the second instructions have a respective prefix that is different from each of the respective prefixes of the first instructions, and wherein the respective prefixes of the first instructions include at least two or more prefixes that are different from each other, and each respective prefix of the first instructions has a corresponding hardware performance counter configured to count only first instructions annotated by the respective prefix to which the hardware performance counter corresponds; annotating each of the instructions with the respective prefix for the instruction; and counting, by each corresponding hardware performance counter, only first instructions in the plurality of instructions annotated by the respective prefix to which the corresponding hardware performance counter corresponds.