speedTest.html 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <title>Speed-test</title>
  7. </head>
  8. <body>
  9. <script>
  10. const delay = ms => new Promise(ok => setTimeout(() => ok(ms), ms))
  11. async function speedtest(getPromise, count,parallel=1){
  12. var duration = 0;
  13. var querySpeed;
  14. var queryDuration;
  15. var parallelSpeed;
  16. var parallelDuration;
  17. for(let j = 0; j < count; j++) {
  18. let start = new Date().getTime();
  19. let parallelArray = []
  20. for(let i = 0; i < parallel; i++) {
  21. parallelArray.push(getPromise());
  22. }
  23. console.log(await Promise.all(parallelArray));
  24. let end = new Date().getTime();
  25. duration += (end - start);
  26. };
  27. queryDuration = duration / count;
  28. parallelSpeed = (count * parallel) / duration;
  29. parallelDuration = duration / (count * parallel);
  30. querySpeed = 1 / (duration / count) ;
  31. return {
  32. duration,
  33. querySpeed, //средняя скорость одного запроса
  34. queryDuration, //
  35. parallelSpeed,
  36. parallelDuration
  37. }
  38. }
  39. speedtest(() => delay(1000), 10, 10 ).then(result => console.log(result));
  40. // {duration: 10000,
  41. // querySpeed: 0.001, //1 тысячная запроса за миллисекунду
  42. // queryDuration: 1000, //1000 миллисекунд на один реальный запрос в среднем
  43. // parallelSpeed: 0.01 // 100 запросов за 10000 миллисекунд
  44. // parallelDuration: 100 // 100 запросов за 10000 миллисекунд
  45. //speedtest(() => fetch('http://swapi.dev/api/people/1').then(res => res.json()), 10, 5);
  46. //speedtest(() => fetch('http://swapi.dev/api/people/1').then(res => res.json()), 10, 5).then(result => console.log(result));
  47. </script>
  48. </body>
  49. </html>