//对数组中的数字进行异步求和 异步函数sumAsync(arr){ 如果(arr.length==1),则返回arr[0]; 常数一半=arr.length/2; //左半部分的数字 左常量=arr.filter((e,i)=>{ 返回i<一半; }); //右半部分的数字 右常数=arr.filter((e,i)=>{ 返回i>=一半; }); //递归调用 const leftR=sumAsync(左); const rightR=sumAsync(右); //等待解决 wait Promise.all([leftR,rightR]); 返回等待左R+等待右R; } //对数组中的数字进行同步求和 函数sumSync(arr){ 如果(arr.length==1),则返回arr[0]; 常数一半=arr.length/2; //左半部分的数字 const left=arr.filter((e,i)=>{ 返回i<一半; }); //右半部分的数字 右常数=arr.filter((e,i)=>{ 返回i>=一半; }); //递归调用 const leftR=sumSync(左); const rightR=sumSync(右); return leftR+rightR; }
(异步()=>{ 常量长度=1048576;// 1024^2 const arr=Array.from(数组(长度),num=>Math.random()*10|0); //arr[1048576]<-随机(0~9) //异步和 console.log('ASYNC'); before=日期.now(); log(`SUM:${await-sumAsync(arr)}`); after=Date.now(); console.log(`TIME:${after-before}ms`); //同步总和 console.log('SYNC'); before=日期.now(); console.log(`SUM:${sumSync(arr)}`); after=Date.now(); console.log(`TIME:${after-before}ms`); })();
//ASYNC公司 //金额:4720832 //时间:5554 ms //同步 //金额:4720832 //时间:613 ms