我刚开始参与一个科学项目,速度非常重要(HPC)。目前我正在设计数据结构。该项目的核心是一个双精度值的3D网格,用于解决偏微分方程。
由于速度在这里比代码的简洁性更重要,所以我想知道STL和通常的C风格数组相比表现如何。在我的情况下,由于它是一个三维网格,我考虑了a)具有线性索引的一维向量b)三个向量的向量或c)一维C风格数组或d)三维C风格数组。
我查找了旧问题,但我只发现关于构建/销毁的问题(这对于此处不重要,因为数据结构仅在程序启动时创建一次 - 快速索引和计算很重要),或者关于不同STL容器的比较。
感谢您的帮助
boost::multi_array
- 在这种情况下,它很可能在性能和设计方面都非常出色。 - Joseph Mansfieldvector<vector<...>>
这样的结构。 - Hristo Iliev