1. A computer-implemented method for identifying loops that contain algorithms on a virtual machine, comprising: under the control of one or more computer systems configured with executable instructions, collecting a plurality of execution traces, each execution trace comprising one or more items of information corresponding to execution of a computer executable instruction executed on the virtual machine; grouping one or more of the plurality of execution traces into a set of groups of execution traces based at least in part on identifying a set of instructions that is executed in a consistent pattern; selecting a subset of the set of groups of execution traces based at least in part on one or more data elements shared in common between one or more members of the subset of the set of groups; and computing one or more scores based at least in part on comparing a first set of execution traces comprising the execution traces contained in one or more of the groups of execution traces in the subset of the set of groups against a second set of execution traces comprised of one or more execution traces in a reference algorithm, the one or more scores based at least in part on one or more similarity measurements between the first set of execution traces and the second set of execution traces, the one or more scores indicating whether the first set of execution traces includes at least a portion of an implementation of an algorithm; and determining whether the first set of execution traces matches the algorithm based at least in part on the one or more scores.