123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <title>Speed-test</title>
- </head>
- <body>
-
- <script>
- const delay = ms => new Promise(ok => setTimeout(() => ok(ms), ms))
- async function speedtest(getPromise, count,parallel=1){
- var duration = 0;
- var querySpeed;
- var queryDuration;
- var parallelSpeed;
- var parallelDuration;
- for(let j = 0; j < count; j++) {
- let start = new Date().getTime();
- let parallelArray = []
- for(let i = 0; i < parallel; i++) {
- parallelArray.push(getPromise());
- }
- console.log(await Promise.all(parallelArray));
- let end = new Date().getTime();
- duration += (end - start);
-
- };
-
- queryDuration = duration / count;
- parallelSpeed = (count * parallel) / duration;
- parallelDuration = duration / (count * parallel);
- querySpeed = 1 / (duration / count) ;
-
- return {
- duration,
- querySpeed, //средняя скорость одного запроса
- queryDuration, //
- parallelSpeed,
- parallelDuration
- }
- }
- 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>
- </html>
|