1. A computer implemented method for detecting performance bottlenecks in a target application, the computer implemented method comprising: responsive to receiving, by a data processing system, hotspot selections from a user interface, wherein a hotspot is a region of source code that exceeds a time threshold to execute in the target application, extracting, by the data processing system, a plurality of bottleneck rules from a database to analyze the hotspot selections to detect the performance bottlenecks; identifying, by the data processing system, a metric for each bottleneck rule in the plurality of bottleneck rules extracted from the database, wherein each identified metric is used to evaluate its associated bottleneck rule; responsive to identifying, by the data processing system, a metric for each bottleneck rule in the plurality of bottleneck rules, identifying, by the data processing system, execution order dependencies among different metrics associated with the plurality of bottleneck rules to form identified execution order dependencies among the different metrics; building, by the data processing system, a dependency graph based on the identified execution order dependencies among the different metrics; partitioning, by the data processing system, the dependency graph based on the identified execution order dependencies among the different metrics into different levels so that no execution order dependency among the different metrics exists within a particular level of the different levels; identifying, by the data processing system, modules associated with each of the different levels that are used to compute the different metrics; executing, by the data processing system, the modules associated with a level in an appropriate order one successive level after another to compute the different metrics to form computed metrics; determining, by the data processing system, whether each bottleneck rule is evaluated to true using the computed metrics; responsive to determining, by the data processing system, that a bottleneck rule is evaluated to true using an associated computed metric, creating, by the data processing system, a bottleneck description for the bottleneck rule; and sending, by the data processing system, the bottleneck description to the user interface.