原子操作例子分析

这篇博客通过实验分析了不同线程数量下,使用和不使用原子操作执行内存加法操作的性能差异。实验结果显示,随着线程数量增加,不使用原子操作的平均操作时间增长,而使用原子操作虽然能避免数据竞争,但会带来额外的性能开销。此外,当线程数量和内存块数相等时,单次操作时间趋于稳定。
摘要由CSDN通过智能技术生成

a.一块内存,只一个线程连续操作多次(1000*1000*1000),执行加法多次,每个进程平均一次就是4-5ns,应该是命中L2

b.一块内存,2个线程(同一个cpu下)连续操作多次(不用原子操作),执行加法多次,每个进程平均一次操作就是12ns(单个其实是6ns)

c.一块内存,4个线程(同一个cpu下)连续操作多次(不用原子操作),执行加法多次,每个进程平均一次操作就是24ns(单个其实是6ns)

d.一块内存,1个线程(同一个cpu下)连续操作多次(用原子操作),执行加法多次,每个进程平均一次操作就是20ns(why,跟g比,还长?)

e.一块内存,2个线程(同一个cpu下)连续操作多次(用原子操作),执行加法多次,每个进程平均一次操作就是80ns(单个其实是40ns,上面是20ns,这里为啥40ns)

f.一块内存,4个线程(同一个cpu下)连续操作多次(用原子操作),执行加法多次,每个进程平均一次操作就是160ns(单个其实是40ns)

g. 20块内存,20个线程(同一个cpu下)连续操作多次(用原子操作),执行加法多次,每个进程平均一次操作就是13ns(单个其实是13ns)

n块内存,n个线程,各自连续操作多次(用原子操作+),一次约13ns(这个应该是命中L3,  https://taohui.blog.csdn.net/article/details/82413977,看看这个文章,一次L3约12ns),n增加时间不变,不同变量应该不受原子lock影响

 

 

#include <sys/time.h>
#include <stdlib.h>
#i

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值