1. A computer implemented method for determining an optimal hardware architecture for a reference application, the method comprising: executing a plurality of applications on a current hardware architecture, the applications comprising the reference application and a plurality of test applications; collecting, with a computer, performance data corresponding to performance of the applications on the current hardware architecture; computing a plurality of application signatures corresponding to the applications using the performance data; computing a similarity element using the application signatures, wherein the similarity element illustrates degrees of similarity between the applications based on their application signatures; and deriving, in a computer, using the similarity element, a subset of test applications that are similar to the reference application based on performance, so as to select a plurality of hardware architectures, for testing the reference application, on which improved performance has been reported for the subset of test applications.