1. A method of compiling a software application, comprising a plurality of functions, comprising: identifying at least one of the plurality of functions as a targeted function having a significant contribution, to performance of the software application: generating a code version of the targeted function with a first of a plurality of machine models, the machine models corresponding respectively to different target utilizations for a target architecture and the first of the plurality of machine models corresponding to a greatest of the different target utilizations; and matching the generated code version of the targeted function with a first application thread of the target architecture, wherein matching the generated code version of the target function with a first application thread of the target architecture is performed in accordance with a priority scheme, wherein: highest priority is given to: defining an initial state of the first application thread as being in a noncritical state; allowing the first application thread to enter a critical state; and matching the generated code version of the targeted function with the first application thread in accordance with entry of the first application thread into the critical state; intermediate priority is given to: marking the targeted function with a first criticality index; and matching the generated code version of the targeted function with the first application thread in accordance with the first criticality index; and lowest priority is given to: marking application threads with a second criticality index; and matching the generated code version of the targeted function with the first application thread in accordance with the second criticality index.