多维数组的性能与对象数组的性能相比如何?

How does the performance of a Multidimensional array compare to an array of objects?

本文关键字:性能 数组 对象      更新时间:2023-10-16

假设我有三个值:

int age;
int girth;
int length;

在多维数组中存储和循环这些值是否更有效,或者使用这3个成员变量声明一个类,然后用该类的对象填充数组?

如果您想将每个维度解释为您的值之一,那么对于小数组大小就可以了。尽管如此,当缓存不足时,如果您希望访问第一个维度的第一个元素,然后是第二个维度和第三个维度,那么您可能会遇到性能的巨大下降。这是由于多维数组的内存布局和CPU缓存。

如果你将它作为一个结构体或所有3个值被解释为数组的一个维度,并且如果你将继续以遍历方式访问该数组(例如,不跳跃),那么你将获得可能的最佳性能。

所以,它应该是这样的:

struct entry
{
    int age;
    int girth;
    int length;
}
std::array<entry, /*size*/> entries;