起因
在进行false sharing实验的过程中,访问``vector<int>
``不会体现false sharing的效果,自定义一个Counter
struct Counter{
int cnt;
};
然后访问``vector<Counter>
``,就可以正常发现false sharing的规律。
猜测是编译器gcc开了 -O3之后,对于vector of int, 直接把vector[i]的访问优化成寄存器,换成``vector<Counter>
``,编译器不敢做这样的优化了。