Benchmarking Languages for Evolutionary Algorithms

Although performance is important, several other issues should be taken into account when choosing a particular language for implementing an evolutionary algorithm, such as the fact that the speed of different languages when carrying out an operation will depend on several factors, including the size of the operands, the version of the language and underlying factors such as the operating system. However, it is usual to rely on compiled languages, namely Java or C/C++, for carrying out any implementation without considering other languages or rejecting them outright on the basis of performance. Since there are a myriad of languages nowadays, it is interesting however to measure their speed when performing operations that are usual in evolutionary algorithms. That is why in this paper we have chosen three evolutionary algorithm operations: bitflip mutation, crossover and the fitness function OneMax evaluation, and measured the speed for several popular, and some not so popular, languages. Our measures confirm that, in fact, Java, C and C++ not only are the fastest, but also have a behaviour that is independent of the size of the chromosome. However, we have found other compiled language such as Go or interpreted languages such as Python to be fast enough for most purposes. Besides, these experiments show which of these measures are, in fact, the best for choosing an implementation language based on its performance.

[1]  William B. Langdon,et al.  Evolving Regular Expressions for GeneChip Probe Performance Prediction , 2008, PPSN.

[2]  Martin Odersky,et al.  An Overview of the Scala Programming Language , 2004 .

[3]  El-Ghazali Talbi,et al.  A software framework based on a conceptual unified model for evolutionary multiobjective optimization: ParadisEO-MOEO , 2011, Eur. J. Oper. Res..

[4]  César Hervás-Martínez,et al.  JCLEC: a Java framework for evolutionary computation , 2007, Soft Comput..

[5]  David H. Wolpert,et al.  No free lunch theorems for optimization , 1997, IEEE Trans. Evol. Comput..

[6]  Zbigniew Michalewicz,et al.  Evolutionary algorithms , 1997, Emerging Evolutionary Algorithms for Antennas and Wireless Communications.

[7]  Alan Edelman,et al.  Julia: A Fast Dynamic Language for Technical Computing , 2012, ArXiv.

[8]  Juan Julián Merelo Guervós,et al.  Service oriented evolutionary algorithms , 2013, Soft Comput..

[9]  Juan Julián Merelo Guervós,et al.  NodEO, a multi-paradigm distributed evolutionary algorithm platform in JavaScript , 2014, GECCO.

[10]  Juan Julián Merelo Guervós,et al.  A Distributed Service Oriented Framework for Metaheuristics Using a Public Standard , 2010, NICSO.

[11]  Enrique Alba,et al.  Algorithm::Evolutionary, a flexible Perl module for evolutionary computation , 2010, Soft Comput..

[12]  Lutz Prechelt,et al.  An Empirical Comparison of Seven Programming Languages , 2000, Computer.

[13]  Frank Kargl,et al.  A conceptual model for event-sourced graph computing , 2015, DEBS.

[14]  Juan Julián Merelo Guervós,et al.  Modeling browser-based distributed evolutionary computation systems , 2015, ArXiv.

[15]  Marc Parizeau,et al.  DEAP: evolutionary algorithms made easy , 2012, J. Mach. Learn. Res..

[16]  Eric Anderson,et al.  Efficiency matters! , 2010, OPSR.

[17]  Roberto Ierusalimschy,et al.  Lua—An Extensible Extension Language , 1996 .

[18]  Enrique Alba,et al.  MALLBA: A Library of Skeletons for Combinatorial Optimisation (Research Note) , 2002, Euro-Par.

[19]  Pablo García-Sánchez,et al.  Designing and Modeling a Browser-Based DistributedEvolutionary Computation System , 2015, GECCO.

[20]  Wonjae Lee,et al.  Genetic algorithm implementation in Python , 2005, Fourth Annual ACIS International Conference on Computer and Information Science (ICIS'05).

[21]  Juan Julián Merelo Guervós,et al.  Implementation Matters: Programming Best Practices for Evolutionary Algorithms , 2011, IWANN.

[22]  Juan Julián Merelo Guervós,et al.  A search for scalable evolutionary solutions to the game of MasterMind , 2013, 2013 IEEE Congress on Evolutionary Computation.

[23]  Brian W. Kernighan,et al.  The Go Programming Language , 2015 .

[24]  Juan Julián Merelo Guervós,et al.  Studying and Tackling Noisy Fitness in Evolutionary Design of Game Characters , 2014, IJCCI.

[25]  Juan Julián Merelo Guervós,et al.  An Object-Oriented Library in JavaScript to Build Modular and Flexible Cross-Platform Evolutionary Algorithms , 2014, EvoApplications.