An important problem in benchmarking is to identify the platform that yields the best performance for an application of interest. This paper proposes a methodology for doing this, using both microarchitecture-independent characteristics and genetic algorithms. We first compare the application of interest with the programs from a profiled benchmark suite. We subsequently make a performance prediction based on the inherent program similarity of the application of interest with the benchmarks in the benchmark suite. The value of our methodology is shown by comparing it with the current approach for choosing the best platform for a given application, i.e. choosing the platform that yields the best average performance over all benchmarks.