hw_18_03_speedtest.html 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. <header>speedtest</header>
  2. <body>
  3. <script>
  4. const delay = ms => new Promise(ok => setTimeout(() => ok(ms), ms))
  5. let duration = 0;
  6. async function speedtestOne(getPromise) {
  7. let startTime = new Date();
  8. await getPromise();
  9. let endTime = new Date();
  10. return endTime - startTime;
  11. }
  12. async function speedtest(getPromise, count, parallel = 1) {
  13. const arr = [];
  14. let startTime = new Date();
  15. let execCount = 0;
  16. while (execCount < count) {
  17. for (i = 0; i < parallel; i++) {
  18. execCount++;
  19. if (execCount > count)
  20. break;
  21. arr.push(new Promise(async () => await getPromise()));
  22. let y = 0;
  23. }
  24. let results = await Promise.all(arr);
  25. let x = 0;
  26. }
  27. let endTimeParallel = new Date();
  28. parallelDuration = endTimeParallel - startTime;
  29. parallelSpeed = parallelDuration / count;
  30. duration += parallelDuration;
  31. querySpeed = 0;
  32. queryDuration = 0;
  33. return {
  34. duration,
  35. querySpeed, //средняя скорость одного запроса
  36. queryDuration, //
  37. parallelSpeed,
  38. parallelDuration
  39. }
  40. }
  41. speedtest(() => delay(10000), 10, 10).then(result => console.log(result))
  42. // {duration: 10000,
  43. // querySpeed: 0.001, //1 тысячная запроса за миллисекунду
  44. // queryDuration: 1000, //1000 миллисекунд на один реальный запрос в среднем
  45. // parallelSpeed: 0.01 // 100 запросов за 10000 миллисекунд
  46. // parallelDuration: 100 // 100 запросов за 10000 миллисекунд
  47. //speedtest(() => fetch('http://swapi.dev/api/people/1').then(res => res.json()), 10, 5)
  48. </script>
  49. </body>