@@ -61,6 +61,17 @@ function quartile(values, percentile) {
61
61
return values [ base ] ;
62
62
}
63
63
64
+ function jitter ( values ) {
65
+ // Average distance between consecutive latency measurements...
66
+ let jitters = [ ] ;
67
+
68
+ for ( let i = 0 ; i < values . length - 1 ; i += 1 ) {
69
+ jitters . push ( Math . abs ( values [ i ] - values [ i + 1 ] ) ) ;
70
+ }
71
+
72
+ return average ( jitters ) ;
73
+ }
74
+
64
75
function request ( options , data = "" ) {
65
76
let started ;
66
77
let dnsLookup ;
@@ -148,7 +159,7 @@ async function measureLatency() {
148
159
) ;
149
160
}
150
161
151
- return [ Math . min ( ...measurements ) , Math . max ( ...measurements ) , average ( measurements ) , median ( measurements ) ] ;
162
+ return [ Math . min ( ...measurements ) , Math . max ( ...measurements ) , average ( measurements ) , median ( measurements ) , jitter ( measurements ) ] ;
152
163
}
153
164
154
165
async function measureDownload ( bytes , iterations ) {
@@ -193,13 +204,13 @@ module.exports = async function speedTest() {
193
204
result [ "ping" ] = Math . round ( ( await measureLatency ( ) ) [ 3 ] ) ;
194
205
195
206
const testDown1 = await measureDownload ( 101000 , 10 ) ;
196
- const testDown2 = await measureDownload ( 25001000 , 2 ) ;
207
+ const testDown2 = await measureDownload ( 25001000 , 4 ) ;
197
208
const testDown3 = await measureDownload ( 100001000 , 1 ) ;
198
209
result [ "download" ] = quartile ( [ ...testDown1 , ...testDown2 , ...testDown3 ] , 0.9 ) . toFixed ( 2 ) ;
199
210
200
211
const testUp1 = await measureUpload ( 11000 , 10 ) ;
201
- const testUp2 = await measureUpload ( 101000 , 5 ) ;
202
- const testUp3 = await measureUpload ( 1001000 , 4 ) ;
212
+ const testUp2 = await measureUpload ( 101000 , 10 ) ;
213
+ const testUp3 = await measureUpload ( 1001000 , 8 ) ;
203
214
result [ "upload" ] = quartile ( [ ...testUp1 , ...testUp2 , ...testUp3 ] , 0.9 ) . toFixed ( 2 ) ;
204
215
} catch ( error ) {
205
216
console . error ( "Error while using cloudflare speedtest" ) ;
0 commit comments