1. A method to analyze a computer program that includes a plurality of blocks of code, the method comprising the steps of: executing said computer program; using a counter for tracking each time one of said plurality of blocks of code is executed; maintaining a counter cache for storing said plurality of counters of said plurality of blocks of code that are most recently executed; and maintaining a storage area for storing a plurality of counters of said plurality of blocks of code that are not most recently executed.