我正在阅读以下文章,

What Every Programmer Should Know About Compiler Optimizations



这是否意味着如果我更改类中数据成员的顺序(布局),会影响性能?

所以,

class One
{
int data0;
abstract-data-type data1;
};

表现与
class One
{
abstract-data-type data0;
int data1;
};

如果是这样,那么在定义类或数据结构时的经验法则是什么?

最佳答案

从这种意义上讲,局部性主要是指缓存局部性。编写数据结构和算法以使其大部分在缓存之外运行,可以使算法尽可能快地运行。缓存局部性是快速排序快速的原因之一。

对于数据结构,您想要使数据结构中相互引用的部分彼此相对靠近,以避免冲洗出有用的缓存行。

另外,您可以重新排列数据结构,以便编译器将使用容纳所有成员并仍然有效访问它们所需的最小内存量。这有助于确保您的数据结构消耗最少数量的缓存行。

关于c++ - 数据结构的局部性是什么意思?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28315473/

10-10 18:24
查看更多