1. A method, the method comprising: compiling at a first level a set of code portions of an application to produce a first output, wherein the compiling at the first level includes inserting block counters and call counters to count a number of times one code portion of the set of code portions is executed; executing the first output using a set of training data, wherein the block counters and the call counters are updated with counts of the number of times one code portion of the set of code portions is executed during a training run to create profile-directed feedback information associated with the set of code portions; performing an analysis on the profile-directed feedback information to produce analyzed information, at least by aggregating data of the profile-directed feedback information to determine a maximum block count associated with one source file in the set of code portions; and compiling at a second level the set of code portions of the application to produce a second output using information including the first output and the analyzed information, wherein the compiling at the second level includes: adding select intermediate codes of source files having maximum block counts in a predetermined top percentage, the select intermediate codes being obtained from the first output; and substituting executable codes produced at the first level for excluded intermediate codes of source files, the excluded intermediate codes being intermediate codes not included at the second level.