Route
Where each hop ran on the last run, and how the lab knows.
Connect to see where your requests land.
Results
Per request of 10 items, timed in the worker. End-to-end adds the browser ↔ edge hop.
Live trace
Every sample, log scale. Paths take turns each iteration in a random order. Shaded points are warm-up.
Where the time goes
Median request, split into network round trips and everything else at the far end.
Browser ↔ edge
Network to the data (probe RTT × round trips)
Processing and queuing
How each number is measured
- End-to-end
- Browser
performance.now()around each/api/runcall. Samples run one at a time. - Worker time
- Worker
Date.now()around the batch, in whole milliseconds. The clock only moves on I/O, which is what each read is. - Network
- Median of 7 no-op probes taken before the run: GetItem of a missing key, DO
ping(), cache miss, R2headof a missing key. Multiplied by the round trips the pattern needs at best. - Processing
- Worker time minus network. It includes queuing when the platform runs fewer calls at once than were asked for.
- Inside the DO
- The DO's
cpuTimeMsfrom Workers Logs, joined on a log line the DO writes. It arrives 10–60 s after the run. - Locations
request.cf.colofor ingress;/cdn-cgi/tracefetched from inside the worker and the DO for where each actually runs; thecf-placementheader; configured region for DynamoDB and R2.
Cache API. The cache is per colo. A miss is filled after the response, so warm-up iterations fill it; the Results table shows the hit rate.
Run history
p50 worker time per path. Click a row to load its settings.