English

Programming of Cellular Automata in C and C++

Programming Languages 2024-11-01 v3

Abstract

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). Using arrays instead of vectors, using pointers instead of array indices, using C instead of C++, and using structures and objects instead of primitive data types has little to negligible effects on the running time. Also, the choice of compiler has only a minor effect, except for simple update functions, in which case clang seems to find better ways to optimise it, especially for index-based access. If one is interested in multi-state cellular automata, structures and objects can be used without loss of performance in C and C++, respectively. The study supports the recommendation from practice to use vector in C++ and adds to it the use of index-based access for cellular automata. Future studies might investigate Apple's Metal shader or compiler optimisation, especially with respect to the update function.

Cite

@article{arxiv.2410.10022,
  title  = {Programming of Cellular Automata in C and C++},
  author = {Patrik Christen},
  journal= {arXiv preprint arXiv:2410.10022},
  year   = {2024}
}

Comments

5 pages, 1 figure

R2 v1 2026-06-28T19:19:47.456Z