哪个最快? boost::multi_array
还是 std::vector
?
我将(不是常量)17.179.869 个元素存储在 3 个维度中,需要在 for
循环中非常快速和频繁地访问这些元素。表现最好的是什么? std::vector
还是 boost::multi_array
?
(我不希望它在一秒钟内完成,但我希望它尽可能高效,因为纳秒级的差异可以节省很多时间。)
最佳答案
最好的建议是自己进行基准测试。
在任何情况下,由于您似乎具有恒定的大小,因此还有其他解决方案:
- 普通 C 数组(例如
int data[X][Y][Z]
) - 您自己计算索引的普通一维 C 数组,例如
X*W*H + Y*W + Z
,在某些情况下会很方便 std::array
,它基本上是一个 C++ 数组,带有一些从 STL 集合中提取的语法糖std::vector
,我猜这是第一个可以尝试的方案boost::multi_array
,它旨在支持 N 维数组,因此对于您的目的来说可能有点矫枉过正,但与 vector 相比可能具有更好的数据局部性。
关于c++ - 哪个最快? boost::multi_array 还是 std::vector?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17887532/