-
Notifications
You must be signed in to change notification settings - Fork 66
Expand file tree
/
Copy pathspeed.js
More file actions
87 lines (80 loc) · 2.32 KB
/
speed.js
File metadata and controls
87 lines (80 loc) · 2.32 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
// test speeds of different methods of scanning hosts
let speeds = {1: 0, 2: 0}
let tests = 1000000
let funcs = {
gettime() { new Date().getTime() },
perf() { performance.now() },
}
async function speed()
{
for (let [name, fn] of Object.entries(funcs))
{
console.log(`TEST: ${name}`)
let t1 = performance.now()
for (let i = 0; i < tests; i++)
await fn()
let t2 = performance.now()
console.log(`TEST: ${name}: ${(t2-t1)} / ${tests} = ${(t2-t1)/tests}`)
}
/*
let id = 1
console.log('f1, sig')
for (let i = 0; i < tests; i++)
await f1()
console.log(id+': '+speeds[id]+'/'+tests+'='+(speeds[id]/tests))
id++
console.log('f2, big fetch')
for (let i = 0; i < tests; i++)
await f2()
console.log(id+': '+speeds[id]+'/'+tests+'='+(speeds[id]/tests))
*/
}
speed()
async function f1()
{
const controller = new AbortController()
const { signal } = controller
await t({ signal: signal }, controller, 1)
}
async function f2()
{
const controller = new AbortController()
const { signal } = controller
await t({ signal: signal,
method: 'HEAD', // *GET, POST, PUT, DELETE, etc.
mode: 'cors', // no-cors, *cors, same-origin
cache: 'no-cache', // *default, no-cache, reload, force-cache, only-if-cached
credentials: 'omit', // include, *same-origin, omit
headers: {
//'Content-Type': 'application/json',
},
redirect: 'manual', // manual, *follow, error
referrerPolicy: 'no-referrer', // no-referrer, *no-referrer-when-downgrade, origin, origin-when-cross-origin, same-origin, strict-origin, strict-origin-when-cross-origin, unsafe-url
//body: JSON.stringify(data) // body data type must match "Content-Type" header
}, controller, 2)
}
async function t(obj, controller, id)
{
let p, t3
let catcherr = function(e)
{
//console.log('err', e.name, e)
if (e.name !== 'AbortError')
t3 = window.performance.now()
}
setTimeout(function()
{
controller.abort()
}, 1000)
let t1 = window.performance.now()
p = fetch(`http://192.168.0.1:1337/samyscan`, obj).catch(catcherr)
let t2 = window.performance.now()
await Promise.all([p]).then(function() {
// console.log(t1, t2, t3)
// console.log(t2-t1)
//console.log(t3-t1)
// if (!t3) { console.log('crap')}
//console.log(speeds[id])
speeds[id] += t3-t1
})
}