Browse Source

HW13AsyncAwait done

Aleksandrov96 2 years ago
parent
commit
4e4db5b5ba
1 changed files with 27 additions and 49 deletions
  1. 27 49
      homeWork13AsyncAwait/index.js

+ 27 - 49
homeWork13AsyncAwait/index.js

@@ -50,52 +50,30 @@ pedestrianTrafficLight()
 
 ///////////////////////////////////////////////
 //speedtest 
-Array.prototype.average = function () { 
-    var sum = 0; 
-    var count = this.length; 
-    for (i = 0; i < count; i++) { 
-      sum += this[i]; 
-    } 
-    return sum / count; 
-  }; 
-   
-  async function speedtest(getPromise, count, parallel = 1) { 
-    const parallelDuration = count * parallel; 
-    let arrTimeQuery = []; 
-    const storageParallel = parallel; 
-    const storageCount = count; 
-    let box = []; 
-    const time = performance.now(); 
-    while (count > 0) { 
-      let queryTime = performance.now(); 
-      while (parallel > 0) { 
-        box.push(getPromise()); 
-        parallel--; 
-      } 
-      parallel = storageParallel; 
-      console.log(box); 
-      await Promise.all(box); 
-      box = []; 
-      count--; 
-      arrTimeQuery.push(performance.now() - queryTime); 
-    } 
-    count = storageCount; 
-    const queryDuration = arrTimeQuery.average(); 
-    const duration = performance.now() - time; 
-    const querySpeed = parallelDuration / duration / count; 
-    const parallelSpeed = parallelDuration / duration; 
-    return { 
-      duration, 
-      querySpeed, 
-      queryDuration, 
-      parallelSpeed, 
-      parallelDuration, 
-    }; 
-  } 
-   
-  speedtest(() => delay(1000), 10, 10).then((result) => console.log(result)); 
-  speedtest( 
-    () => fetch("http://swapi.dev/api/people/1").then((res) => res.json()), 
-    10, 
-    5 
-  ).then((result) => console.log(result));
+async function speedtest(getPromise, count, parallel = 1) {
+
+  let firstTime = performance.now();
+  for (let i = count; i > 0; i--) {
+     let promiseArr = [];
+     for (let j = parallel; j > 0; j--) {           
+        promiseArr.push(getPromise())
+     }
+     console.log(promiseArr);
+     await Promise.all(promiseArr);
+  }
+  let duration = performance.now() - firstTime;
+  let parallelDuration = duration / (parallel*count);
+  let parallelSpeed = (parallel*count) / duration;
+  let queryDuration = duration / count;
+  let querySpeed = 1 / queryDuration;
+
+  return {
+          duration,
+          querySpeed, //средняя скорость одного запроса
+          queryDuration, 
+          parallelSpeed,
+          parallelDuration
+      }
+  }
+  speedtest(() => delay(1000), 10, 10).then((result) => console.log(result));
+  speedtest(() => fetch('http://swapi.dev/api/people/1').then(res => res.json()), 10, 5).then(result => console.log(result))