c++ - 哪个最快? boost::multi_array 还是 std::vector?

标签 c++ arrays performance stdvector boost-multi-array

哪个最快? 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/

相关文章:

c++ - 如果通过lambda函数对象返回对局部变量的引用,会发生什么情况?

c++ - 为什么 std::string 上的 Sizeof 运算符会产生意外结果?

c# - Unity C# 数组 - 如何克隆

c++ - 保持 fstream 打开或每次需要使用时打开它哪个更有效?

oracle - 测试数据库以测试 Oracle 中的性能调优技术

c++ - 如何使用静态 TexCoords 和动态顶点调用 glDrawElements

c++ - Linux 共享库 C++

Java - 创建一个可以通过其他方法操作和打印的二维数组

arrays - 迭代哈希以检索与数组匹配的值

android - 从android上的sqlite获取数据真的很慢