hlarcher HF Staff commited on
Commit
bdb8bb2
·
unverified ·
1 Parent(s): e3d1af9

feat: implement latency measurement for resource fetching

Browse files
Files changed (1) hide show
  1. src/lib/index.ts +14 -8
src/lib/index.ts CHANGED
@@ -14,12 +14,20 @@ export async function bandwidthTest(
14
  onProgress: BandwidthCallback,
15
  onLatency: (latency: number) => void
16
  ) {
17
- performance.setResourceTimingBufferSize(100);
18
- performance.clearResourceTimings();
19
- // start timer
20
- const startTime = performance.now();
21
- const url = 'https://cdn-test-cloudfront.hf.co/5gb.safetensors';
22
- // const url = 'https://cdn-test-cloudfront.hf.co/15mb.json';
 
 
 
 
 
 
 
 
23
  const response = await fetch(url);
24
  if (!response.ok) {
25
  throw new Error(`Network response was not ok: ${response.status}`);
@@ -35,8 +43,6 @@ export async function bandwidthTest(
35
  // const latency = responseStart - requestStart;
36
  // onLatency(latency);
37
  // }, 2000);
38
- const latency = performance.now() - startTime;
39
- onLatency(latency);
40
  const contentLengthHeader = response.headers.get('content-length');
41
  const totalBytes = contentLengthHeader ? parseInt(contentLengthHeader, 10) : 1e99;
42
  const reader = response.body.getReader();
 
14
  onProgress: BandwidthCallback,
15
  onLatency: (latency: number) => void
16
  ) {
17
+ // performance.setResourceTimingBufferSize(100);
18
+ // performance.clearResourceTimings();
19
+ // const url = 'https://cdn-test-cloudfront.hf.co/5gb.safetensors';
20
+ const url = 'https://cdn-test-cloudfront.hf.co/15mb.json';
21
+ // first HEAD to get latency
22
+ let startTime = performance.now();
23
+ const latencyResponse = await fetch(url, { method: 'HEAD' });
24
+ if (!latencyResponse.ok) {
25
+ throw new Error(`Network response was not ok: ${latencyResponse.status}`);
26
+ }
27
+ const latency = performance.now() - startTime;
28
+ onLatency(latency);
29
+
30
+ startTime = performance.now();
31
  const response = await fetch(url);
32
  if (!response.ok) {
33
  throw new Error(`Network response was not ok: ${response.status}`);
 
43
  // const latency = responseStart - requestStart;
44
  // onLatency(latency);
45
  // }, 2000);
 
 
46
  const contentLengthHeader = response.headers.get('content-length');
47
  const totalBytes = contentLengthHeader ? parseInt(contentLengthHeader, 10) : 1e99;
48
  const reader = response.body.getReader();