|
@@ -0,0 +1,51 @@
|
|
|
+<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>
|