This approach loses some flexibility and accuracy compared to cycle-accurate simulation mentioned above but can be much faster.
The classic approach of performance prediction treats a program as a set of basic blocks connected by execution path.
The execution frequencies of basic blocks are generated from a profiler, which is why this method is called profile-based prediction.
The execution time of a basic block is usually obtained from a simple instruction scheduler.
The major reason is that modern processors can issue and execute several instructions at the same time, sometimes out of the original order and cross the boundary of basic blocks.