A comparison of implementations of basic evolutionary algorithm operations in different languages


It is not usual practice in the evolutionary algorithms area to benchmark different operations in order to choose the best language for a single or multilanguage implementation. Researchers rely instead on common practice or frameworks using mainstream languages. That is why it is usual practice to choose compiled languages (namely Java or C/C++) when implementing evolutionary algorithms, without considering other languages or rejecting them outright on the basis of performance. Since there is a myriad of languages nowadays, we considered it an interesting challenge to measure their speed when performing frequent operations in evolutionary algorithms. In this paper we have tested three basic evolutionary algorithm operations over binary chromosomes: bitflip mutation, crossover and the OneMax fitness function. As a performance measure, the speed for both popular and not so popular computer languages have been used. In general, the results confirm that compiled languages scale and perform better, but also in some cases have a behaviour that is independent of the size of the chromosome. Additionally, results show that other languages, such as Go (compiled) or Python (interpreted) are fast enough for most purposes. Besides, these experiments show which of these operations are, in fact, the best for choosing an implementation language based on its performance.

Evolutionary Computation (CEC), 2016 IEEE Congress on Evolutionary Computation (CEC), 2016 IEEE Congress on