多维数组的性能与对象数组的性能相比如何?
How does the performance of a Multidimensional array compare to an array of objects?
假设我有三个值:
int age;
int girth;
int length;
在多维数组中存储和循环这些值是否更有效,或者使用这3个成员变量声明一个类,然后用该类的对象填充数组?
如果您想将每个维度解释为您的值之一,那么对于小数组大小就可以了。尽管如此,当缓存不足时,如果您希望访问第一个维度的第一个元素,然后是第二个维度和第三个维度,那么您可能会遇到性能的巨大下降。这是由于多维数组的内存布局和CPU缓存。
如果你将它作为一个结构体或所有3个值被解释为数组的一个维度,并且如果你将继续以遍历方式访问该数组(例如,不跳跃),那么你将获得可能的最佳性能。
所以,它应该是这样的:
struct entry
{
int age;
int girth;
int length;
}
std::array<entry, /*size*/> entries;
相关文章:
- 介于 [固定数组] 和 [带内存分配的指针] 之间的性能
- 数组中的不同浮点值会影响性能 10 倍 - 为什么?
- 一维数组映射方式的性能差异问题
- 将类成员数组组合到单个数组时性能下降
- 提高访问大型数组元素的性能
- 使用数组时的抽象与性能
- 为什么这个普通的数组实现比STD ::向量实现性能慢
- C 初始化列表std ::数组最佳性能
- 数组的正确值将提高性能
- std ::数组与数组性能
- 将特征矩阵转换为 c 数组以便我可以使用 gsl 的性能高效方法是什么
- C++中使用大型数组时的性能问题
- C++-静态数组的性能,在启动时具有可变大小
- 在性能方面,我应该更喜欢数组而不是矢量吗
- 数组的结构和结构数组 - 性能差异
- 为什么 std::vector 比本机数组的性能更高
- C++数组与矢量性能测试说明
- 性能问题C++ - 搜索数组
- 数组和过滤性能
- 在将 char 数组复制到字符串期间节省 CPU 周期(提高性能)