false-sharing问题

起因

在进行false sharing实验的过程中,访问``vector<int>``不会体现false sharing的效果,自定义一个Counter

struct Counter{
int cnt;
};

然后访问``vector<Counter>``,就可以正常发现false sharing的规律。
猜测是编译器gcc开了 -O3之后,对于vector of int, 直接把vector[i]的访问优化成寄存器,换成``vector<Counter>``,编译器不敢做这样的优化了。

Leave a Comment