测试程序本身问题更多
1. 线程没绑核独占,线程数超过核数
2. 10线程太多,瓶颈肯定在FSB带宽上
3. global variable,肯定是在L3了,各个线程又都是读+写,cache line很费,cpu内部带宽多半也有问题,baidu cache MESI protocol
4. 加锁以后编译器知道循环独占,做了cache优化,降低了撞锁,增加了cache利用
【 在 confinement 的大作中提到: 】
: 测试程序非常简单,每次就是主程序里push_back十个线程,线程执行的函数就是上面的累加函数。我测试过 -O3 编译,单纯从执行时间看,跟不带O编译看不出什么区别
: 无锁的普通 long long 类型为什么也慢。。
:
--
FROM 122.234.63.*