12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- const delay = (ms) => new Promise((a) => setTimeout(() => a(ms), ms));
- async function speedtest(getPromise, count, parallel = 1) {
- let startTime = performance.now();
- let startQuery;
- let endQuery;
- let queryDurationAll = 0;
- for (let i = 0; i < count; i++) {
- let waiting = [];
- for (let k = 0; k < parallel; k++) {
- waiting.push(getPromise());
- }
-
- startQuery = performance.now();
- await Promise.all(waiting);
- endQuery = performance.now();
- queryDurationAll += endQuery - startQuery;
- }
- let finishTime = performance.now();
- return {
- //общую длительность работы цикла
- duration: finishTime - startTime,
- //реальное средняя скорость запроса
- querySpeed: (count * parallel) / ((finishTime - startTime) * parallel),
- //реальное среднее время запроса (отталкиваясь от count и времени работы цикла).
- parallelDuration: queryDurationAll / (count * parallel),
- //скорость в запросах в миллисекунду
- parallelSpeed: (count * parallel) / (finishTime - startTime),
- //среднее время обработки запроса параллельно (за какое время исполнилось parallel*count промисов)
- queryDuration: ((endQuery - startQuery) / count) * parallel,
- };
- }
- speedtest(() => delay(1000), 10, 10).then((result) => console.log(result));
- speedtest(
- () =>
- fetch("http://swapi.dev/api/people/1")
- .then((res) => res.json())
- .then((data) => console.log(data)),
- 10,
- 5
- ).then((result) => console.log("swapi.dev: ", result));
|