多维数组的性能如何与对象数组进行比较?

时间:2016-09-12 05:30:21

标签: c++ performance

说我有3个值:

int age;
int girth;
int length;

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

1 个答案:

答案 0 :(得分:0)

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

如果您将它作为结构或者所有3个值都被解释为数组的一个维度,并且如果您将继续以遍历方式访问该数组(例如,不跳转),那么您可能会得到尽可能好的表现。

所以,它应该是这样的:

struct entry
{
    int age;
    int girth;
    int length;
}

std::array<entry, /*size*/> entries;