The investigation of complex systems requires running large-scale simulations over many temporal iterations. It is therefore important to provide efficient implementations. The present study borrows philosophical concepts from Gilbert Simondon to identify data structures and algorithms that have the biggest impact on running time and memory usage. These are the entity $e$-tuple $\mathcal{E}$ and the intertwined update function $\phi$. Focusing on implementing data structures in C#, $\mathcal{E}$ is implemented as a list of objects according to current software engineering practice and as an array of pointers according to theoretical considerations. Cellular automaton simulations with $10^9$ entities over one iteration reveal that the object-list with dynamic typing and multi-state readiness has a drastic effect on running time and memory usage, especially dynamic typing as it has a big impact on the evolution time. Pointer-arrays are possible to implement in C# and are more running time and memory efficient as compared to the object-list implementation, however, they are cumbersome to implement. In conclusion, avoiding dynamic typing in object-list based implementations or using pointer-arrays gives evolution times that are acceptable in practice, even on desktop computers.
翻译:对复杂系统的调查需要在许多时间迭代上进行大规模模拟。 因此, 提供高效的实施非常重要 。 本研究从吉尔伯特· 西蒙登借了哲学概念, 以查明对运行时间和记忆使用影响最大的数据结构和算法。 这些实体是 $e$-tuple $mathcal{E}$和相互交织的更新功能 $\phi$。 侧重于执行 C# 中的数据结构, $\mathcal{E}$ 是按当前软件工程实践和根据理论考虑作为一系列指针执行的。 包含 10 $9 美元实体的细胞自动数学模拟显示, 具有动态打字和多状态准备状态的物体列表对运行时间和记忆使用有着强烈的影响, 特别是动态打字对进化时间影响很大。 点阵列可以在 C# 中实施, 但是, 与对象列表实施相比, 它们运行的时间和记忆效率更高, 但是, 它们执行起来很麻烦。 最后, 避免在基于对象列表的实施过程中进行动态打字,, 或者在台式操作中可以接受进化。