|
@@ -0,0 +1,74 @@
|
|
|
+<!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);
|
|
|
+
|
|
|
+ };
|
|
|
+
|
|
|
+
|
|
|
+ querySpeed = (count * parallel) / duration;
|
|
|
+ queryDuration = duration / count;
|
|
|
+ parallelSpeed = (count * parallel) / duration;
|
|
|
+ parallelDuration = count / duration;
|
|
|
+
|
|
|
+
|
|
|
+ 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>
|