缘由
在使用代码执行相同任务时,通常会发现一个现象,就是使用异步并发时,会比循环遍历的速度快,明明是同样处理器单线程?
推导
1a−na+n<0\frac{1}{a}-\frac{n}{a+n}<0a1−a+nn<0
=>a+n−ana(a+n)<0=>\frac{a+n-an}{a(a+n)}<0=>a(a+n)a+n−an<0
设a,na,na,n是自然数,有
=>a<(a−1)n=>a<(a-1)n=>a<(a−1)n
=>n>aa−1>1=>n>\frac{a}{a-1}>1=>n>a−1a>1
说明
当执行任务的时候,系统一直在运行,cpu处理任务时候,肯定是存在其他线程在使用cpu,所以假设aaa是已经存在的线程数,在执行系统的其他任务,nnn是并发执行的量,用于目标任务,并发量越大,任务相对循环执行要快。因为,
f(n)=na+nf(n)=\frac{n}{a+n}f(n)=a+nn
是增函数。由于cpu性能几乎固定和io的限制,因此有上限。简而言之,人多抢的资源就越多。