1. A method performed by a computer processor, said method comprising: receiving trace data gathered by tracing an application; analyzing said trace data to identify a plurality of code elements, including at least a first code element; identifying a plurality of directional relationships among said code elements, said directional relationships being identified as occurring between two of said code elements and being identified as having a directionality; identifying one or more patterns of the code elements, based at least in part on the plurality of directional relationships, the one or more patterns being identified comprising at least one of a star pattern, a pipeline pattern, a parallelism pattern or a cluster pattern, and including at least the first code element; determining a performance metric for each of said code elements; determining a characterization for each of said directional relationships; analyzing said plurality of directional relationships to identify and distinguished between any laggard elements of the plurality of code elements that contribute to a performance bottleneck of the application and any patient elements of the plurality of code elements that do not contribute to a performance bottleneck of the application; and for at least one laggard element, identifying a laggard optimization setting for increasing resource allocation to or prioritization of the at least one laggard element, while also identifying for at least one patient element, a patient optimization setting for decreasing resource allocation to or prioritization of the at least one patient element, at least one of the laggard optimization setting or the patient optimization setting being operable to improve overall application performance.