1. A computer implemented method for profiling the execution of an application, the computer implemented method comprising: sampling execution characteristics of the application at a plurality of sampling points to provide samples; deriving a calling context of the samples by performing partial stack walking between a top of the stack and a root of the stack to collect a stack signature at each of the plurality of sampling points, wherein the stack signature is constructed using data residing on the stack, and wherein performing partial stack walking comprises walking a subset of the stack, and wherein the subset of the stack is less than the entire stack; determining whether a history table contains an entry for a collected stack signature; responsive to a determination that the history table does not contain an entry for the stack signature, adding a new history table entry and collecting a burst without weight compensation; responsive to a determination that the history table does contain an entry for the stack signature, determining whether a random number is less than a predetermined re-enablement ratio; responsive to a determination that the random number is less than a predetermined re-enablement ratio collecting a burst with weight compensation; responsive to a determination that the random number is not less than a predetermined re-enablement ratio skipping the burst; and continuously executing the application between sampling points while gathering additional profiling data, wherein the application executes with profiling enabled.