为什么并发速度比循环快?

博客探讨了代码执行相同任务时,异步并发比循环遍历速度快的现象。通过推导得出相关不等式,假设a为已存在线程数,n为并发执行量,并发量越大任务相对循环执行越快,但受CPU性能和IO限制有上限。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

缘由

在使用代码执行相同任务时,通常会发现一个现象,就是使用异步并发时,会比循环遍历的速度快,明明是同样处理器单线程?

推导

1a−na+n<0\frac{1}{a}-\frac{n}{a+n}<0a1a+nn<0
=>a+n−ana(a+n)<0=>\frac{a+n-an}{a(a+n)}<0=>a(a+n)a+nan<0
a,na,na,n是自然数,有
=>a<(a−1)n=>a<(a-1)n=>a<(a1)n
=>n>aa−1>1=>n>\frac{a}{a-1}>1=>n>a1a>1

说明

当执行任务的时候,系统一直在运行,cpu处理任务时候,肯定是存在其他线程在使用cpu,所以假设aaa是已经存在的线程数,在执行系统的其他任务,nnn是并发执行的量,用于目标任务,并发量越大,任务相对循环执行要快。因为,
f(n)=na+nf(n)=\frac{n}{a+n}f(n)=a+nn
是增函数。由于cpu性能几乎固定和io的限制,因此有上限。简而言之,人多抢的资源就越多。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值