多线程频繁写全局变量导致性能降低
多线程频繁写全局变量导致性能降低
l 问题:
在测试多线程程序性能时,发现多线程比单线程运行时周期长。经实验发现,是由于多线程频繁对全局变量或者静态变量的写操作时,导致的性能降低。
l 测试环境:
系统:
CPU:Intel(R) Xeon(R) CPU E5-2650 v2 @ 2.60GHz
MEM:4条*8G
系统:CentOS Linux release 7.2.1511 (Core) 64bit
l 测试代码:
全局变量:int g_num[THREAD_NUM];
线程处理函数:
1.绑定cpu
2.while循环执行
{
第一次计时
Run () // g_num[thread_id]++;
执行到第n次计时,并打印当前线程处理平均处理周期
}
结果:单线程处理时,完成n次时间比多线程处理周期短,速度快。更改代码,只对g_num读而不写时,单线程和多线程处理周期相同。
l 分析
多个cpu在写一块内存会产生总线竞争,操作堆栈区的变量不会。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步