This study explores running times of different ways to program cellular automata in C and C++, i.e. looping through arrays by different means, the effect of structures and objects, and the choice of data structure (array versus vector in C++) and compiler (GNU gcc versus Apple clang). The choice of data structure influenced the running time the most. The array version is more than 20-times faster than the vector version in C++. The choice of compiler also had an effect, with the GNU gcc compiler delivering 1.7-times faster programs as compared to the Apple clang compiler. Using pointers instead of array indices, using C instead of C++, and using structures and objects instead of primitive data types has little to neglectable effects on the running time. The study shows that using arrays and looping over them by index in C++ and compiled with GNU gcc reveals the best performance with respect to running time. If one is interested in multi-state cellular automata, objects can be used without loss of that performance. Future studies might investigate Apple's Metal shader or compiler optimisation.
翻译:暂无翻译