c++ - 数组、 vector 、Boost::arrays

标签 c++ arrays performance vector multidimensional-array

我将在每一帧分配和取消分配许多表示矩阵的动态多维数组。

优先级,即使以错误检查和手动内存管理为代价:

  1. 速度
  2. 内存占用小

考虑到这些优先级,C 样式数组是最佳选择吗?我知道这是一个经常被问到的问题,但我无法找到适合我的情况的明确答案。

最佳答案

如果您可以描述将用于任何特定“帧”(无论是什么)的一组数组所需的最大内存量,并且如果您一次仅处理一个帧(换句话说,您将在一组数组上执行工作,然后转储所有这些数组,然后再对另一组数组执行另一轮工作)然后您可能会通过从大小适合最大可能工作集的静态内存块。

然后你的数组分配可以是一个简单的池分配器,它从 block 的前面为数组分配内存,并将 block 指针调整到刚刚过去的分配位置,为下一个数组分配做好准备。当您完成该组数组的工作后,可以通过“清理池”来释放所有内容 - 只需将 block 指针重置为静态内存池的开头即可。

当然,由于您没有详细说明如何完成工作,因此这种技术可能根本不适合(这可能就是为什么您还没有找到明确的答案 - 这样的答案取决于您正在执行的工作的具体特征)。

关于c++ - 数组、 vector 、Boost::arrays,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9224730/

相关文章:

c++ - const 限定符从纯虚函数中消失

c++ - .template (dot-template) 构造用法

arrays - 从嵌入数组的内部文档中检索数据

java - 您如何处理从文件上传的数据?例如,计算总和? java

c++ - 在 C++ 中加速双绝对值

matlab - 在 Matlab 中结合基于索引和逻辑寻址

c++ - WinAPI:如何在自定义编辑控件中处理键盘输入

c++ - 如果没有文件、objdump 或 gdb,如何知道二进制文件是否包含调试符号?

java - 为什么 if 语句在 for 循环中不能正常工作?

c# - Oracle ODP.NET 托管驱动程序在 64 位中的运行速度比在 32 位中慢 50-100%