|
@@ -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))
|