123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- <header>speedtest</header>
- <body>
- <script>
- 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;
- }
- async function speedtest(getPromise, count, parallel = 1) {
- const arr = [];
- let startTime = new Date();
- let execCount = 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;
- }
- let results = await Promise.all(arr);
- let x = 0;
- }
- let endTimeParallel = new Date();
- parallelDuration = endTimeParallel - startTime;
- parallelSpeed = parallelDuration / count;
- duration += parallelDuration;
- querySpeed = 0;
- queryDuration = 0;
- return {
- duration,
- querySpeed, //средняя скорость одного запроса
- queryDuration, //
- parallelSpeed,
- parallelDuration
- }
- }
- speedtest(() => delay(10000), 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)
- </script>
- </body>
|