|
@@ -46,4 +46,56 @@ async function pedestrianTrafficLight(){
|
|
|
])
|
|
|
}
|
|
|
}
|
|
|
-pedestrianTrafficLight()
|
|
|
+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));
|