|
@@ -5,32 +5,35 @@
|
|
|
const delay = ms => new Promise(ok => setTimeout(() => ok(ms), ms))
|
|
|
let duration = 0;
|
|
|
async function speedtestOne(getPromise) {
|
|
|
- let startTime = new Date();
|
|
|
- await getPromise();
|
|
|
- let endTime = new Date();
|
|
|
- return endTime - startTime;
|
|
|
- }
|
|
|
+ let startTime = new Date();
|
|
|
+ await getPromise();
|
|
|
+ let endTime = new Date();
|
|
|
+ return endTime - startTime;
|
|
|
+ }
|
|
|
async function speedtest(getPromise, count, parallel = 1) {
|
|
|
const arr = [];
|
|
|
let startTime = new Date();
|
|
|
let execCount = 0;
|
|
|
+ let queryDuration = 0;
|
|
|
while (execCount < count) {
|
|
|
for (i = 0; i < parallel; i++) {
|
|
|
execCount++;
|
|
|
if (execCount > count)
|
|
|
break;
|
|
|
- arr.push(new Promise(async () => await getPromise()));
|
|
|
- let y = 0;
|
|
|
+ arr.push(new Promise(
|
|
|
+ async resolveFunc => {
|
|
|
+ let res = await speedtestOne(getPromise);
|
|
|
+ resolveFunc(res);
|
|
|
+ }));
|
|
|
}
|
|
|
let results = await Promise.all(arr);
|
|
|
- let x = 0;
|
|
|
+ queryDuration = results.reduce((va, v) => va + v);
|
|
|
}
|
|
|
let endTimeParallel = new Date();
|
|
|
+ querySpeed = queryDuration / count;
|
|
|
parallelDuration = endTimeParallel - startTime;
|
|
|
parallelSpeed = parallelDuration / count;
|
|
|
duration += parallelDuration;
|
|
|
- querySpeed = 0;
|
|
|
- queryDuration = 0;
|
|
|
return {
|
|
|
duration,
|
|
|
querySpeed, //средняя скорость одного запроса
|
|
@@ -39,13 +42,14 @@
|
|
|
parallelDuration
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
- speedtest(() => delay(10000), 10, 10).then(result => console.log(result))
|
|
|
+ speedtest(() => delay(1000), 10, 10)
|
|
|
+ .then(result => console.log(result))
|
|
|
// {duration: 10000,
|
|
|
// querySpeed: 0.001, //1 тысячная запроса за миллисекунду
|
|
|
// queryDuration: 1000, //1000 миллисекунд на один реальный запрос в среднем
|
|
|
// parallelSpeed: 0.01 // 100 запросов за 10000 миллисекунд
|
|
|
// parallelDuration: 100 // 100 запросов за 10000 миллисекунд
|
|
|
- //speedtest(() => fetch('http://swapi.dev/api/people/1').then(res => res.json()), 10, 5)
|
|
|
+ speedtest(() => fetch('http://swapi.dev/api/people/1').then(res => res.json()), 10, 5)
|
|
|
+ .then(result => console.log(result))
|
|
|
</script>
|
|
|
</body>
|