Recorded on 2026-09-01 with the JWT sessions of that day. The session paths and the token wording below describe that day, not the current design. For today's design read the Rails authentication pages and the JodApp Web authentication pages.
Web latency baseline — prod, measured from a laptop
This page holds one benchmark run. It measures how long the Jod web server and the Jod Rails API take to answer.
It exists to answer one question. Should a page fetch its data in a React Router loader() or in a clientLoader()?
- A
loader()runs on the web server. The web server calls the Rails API over a private name inside the VPC. Then it sends finished HTML to the browser. The user waits once. - A
clientLoader()runs in the browser. The page shell arrives first. Then the browser calls the Rails API itself over the public internet, through Cloudflare. The user waits twice, and the second wait leaves the page half empty.
The two shapes pay different network costs. This run measures both costs so the choice rests on numbers, not on a guess.
This run is a baseline, not the final answer
A new session middleware is coming to the web server. On every navigation that carries a session cookie, it will call GET /identities/sessions/current on the Rails API. That middleware does not exist yet. It did not run during this benchmark.
So treat these numbers as the "before" picture. Run the same script again after the middleware ships, with the same flags. Then put the two reports side by side.
What was measured, and from where
| Item | Value |
|---|---|
| Environment | prod |
| Mode | client (from a laptop over the public internet) |
| Started (UTC) | 2026-09-01T14:32:22Z |
| Finished (UTC) | 2026-09-01T14:35:22Z |
| Run time | 177 seconds |
| Machine host name | Nerdherd-M2-Max.local |
| Machine kernel | Darwin 25.5.0 arm64 |
| curl | curl 8.7.1 (x86_64-apple-darwin25.0) libcurl/8.7.1 (SecureTransport) LibreSSL/3.3.6 zlib/1.2.12 nghttp2/1.68.1 |
| Network the run came from | home fibre, jakarta, indihome |
| Public web host | jodapp.com |
| Public API host | api.jodapp.com |
| Private API host | api.internal.jodapp.com |
| Measured requests per measurement | 20 |
| Warm-up requests per measurement | 3 |
| Total requests sent | 253 |
| User-Agent, API requests | jod-latency-benchmark/1.0 |
| User-Agent, page requests | Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36 jod-latency-benchmark/1.0 |
| Session cookie | supplied. Its value is not in this report. |
The two API endpoints, and why there are two
This report measures the Rails API twice, with two different endpoints. They answer different questions.
| Endpoint | What it does | What its number means |
|---|---|---|
/up | The Rails health route. It touches no database. | The network floor. The smallest cost the path can have. No page ever calls it, so it is not the cost of a data fetch. |
GET /identities/sessions/current | Verifies the JWT from the session cookie, then asks two services whether the user may enter the talent area and the employer area. | One real signed-in fetch. This is what a page actually pays, and it is the endpoint the coming middleware calls. |
The gap between the two is the Rails work. That split matters. Only one half of it changes when you move a fetch from the server to the browser.
- The network half changes a lot. The private path stays inside the VPC. The public path crosses the internet and Cloudflare.
- The Rails half does not change at all. The same query runs either way.
So read the two numbers together. Reading /up on its own leads to the wrong conclusion, in a way that is easy to miss.
- The gap in milliseconds between the two paths is the same either way. The Rails work is added to both sides, so it cancels out.
- What changes is how large that gap looks next to the whole wait.
- On
/upalone, the gap is almost the entire number. Next to a real fetch it is one part of a larger total.
That share is what the decision turns on. A gap of 30 ms matters a lot when the whole fetch takes 35 ms. It matters much less when the whole fetch takes 300 ms.
Does this environment serve the session endpoint?
Environments do not always run the same build. So the script checks before it starts, instead of assuming. It sends one request with no cookie and reads the status code.
| Answer | What it means | What the script does |
|---|---|---|
| 401 | The route is there. The cookie is simply missing on a check request. | Measures the real fetch. |
| 404 | This Rails API does not serve the path. | Skips the measurement, rather than recording 404 timings as a result. |
On this run, /identities/sessions/current answered on prod. So the numbers below include one real signed-in fetch.
Why the GET, and not the session refresh
The path /identities/sessions/current answers four verbs. Only one of them belongs in a benchmark.
| Verb | Can this benchmark use it? |
|---|---|
GET | Yes. It changes nothing. It verifies the JWT, then asks two services whether the user may enter the talent area and the employer area. |
PATCH | No. It rotates the JWT and sets new cookies. That is a write. It would also end the session being used to run the benchmark, because each call replaces the cookie the last one used. |
POST | No. It signs a user in. It is a write, and it needs a password. |
DELETE | No. It signs the user out. It is a write. |
This script only ever sends GET requests. It never touches the other three.
The GET is the right one for a second reason. The coming middleware calls this exact endpoint on every request that carries a session cookie. So its cost is the cost the middleware will add.
A heavier endpoint to compare against
The session endpoint is deliberately small. It answers who is signed in and where they may go, and it carries no page data.
For a heavier read, run the script again with --session-endpoint /identities/users/current. That one loads the user with about ten associated tables and serialises the lot. It shows what a fatter fetch costs on the same two paths.
How to read the numbers
Every number in this report is milliseconds.
| Term | What it means |
|---|---|
TTFB (time_starttransfer) | The wait until the first byte of the response arrives. This is the wait the user feels. |
Whole response (time_total) | The wait until the last byte arrives. For a big HTML page this is larger than TTFB. |
DNS (time_namelookup) | Time spent turning the host name into an IP address. |
TCP connect (time_connect) | Time spent opening the TCP connection. |
TLS handshake (time_appconnect) | Time spent on the TLS handshake. It is 0 on plain HTTP. |
Ready to send (time_pretransfer) | Everything above, finished. The request has not left yet. |
Two connection shapes appear below.
| Shape | How it was produced | What it stands for |
|---|---|---|
| New connection each time | One curl process per request. A new process cannot reuse a connection. | The first call after a cold start. It pays DNS, TCP and TLS. |
| Connection reused | One curl process, many URLs. curl keeps the connection open. | Real life. Node's built-in fetch keeps connections alive by default, and so does a browser. Use this number when you reason about loader() and clientLoader(). |
In a reused-connection measurement the DNS, TCP and TLS rows read close to 0. That is correct. The connection was already open, so no time was spent opening it.
The p95 uses the nearest-rank method. Sort the samples, then take the sample at position ceil(0.95 times n). With 20 samples that is the 19th.
Warm-up requests are listed under each table. They are never mixed into min, median, mean, p95 or max.
Every page request carries a cb query parameter. Its value is different every time. So no cache can answer the request.
Every measured request sends Accept-Encoding for gzip, the way a browser and Node's fetch both do.
Warnings from this run
Read these before you trust any number below.
- Public page /up, the control, new connection each time: the page did not stream. Time to first byte (155.15 ms) is almost the whole response (156.34 ms). The usual cause is that the page defers no data: with no Suspense boundary and no deferred loader value, React Router must resolve every loader before it sends any HTML, so nothing can arrive early. A User-Agent the server treats as a bot has the same effect. Neither is a fault in this script.
- Public page /up, the control, connection reused: the page did not stream. Time to first byte (337.85 ms) is almost the whole response (343.39 ms). The usual cause is that the page defers no data: with no Suspense boundary and no deferred loader value, React Router must resolve every loader before it sends any HTML, so nothing can arrive early. A User-Agent the server treats as a bot has the same effect. Neither is a fault in this script.
- Public page /jobs, new connection each time: the page did not stream. Time to first byte (1295.36 ms) is almost the whole response (1302.34 ms). The usual cause is that the page defers no data: with no Suspense boundary and no deferred loader value, React Router must resolve every loader before it sends any HTML, so nothing can arrive early. A User-Agent the server treats as a bot has the same effect. Neither is a fault in this script.
- Public page /jobs, connection reused: the page did not stream. Time to first byte (608.30 ms) is almost the whole response (610.44 ms). The usual cause is that the page defers no data: with no Suspense boundary and no deferred loader value, React Router must resolve every loader before it sends any HTML, so nothing can arrive early. A User-Agent the server treats as a bot has the same effect. Neither is a fault in this script.
Results
Network floor, browser to Rails API, public internet, new connection each time
The smallest cost the public path can have. /up touches no database, so this is network, Cloudflare and TLS, and nothing else.
- URL:
https://api.jodapp.com/up - Connection shape: new connection each time
- Requests: 3 warm-up, 20 measured
- Connections opened: 23
- Status codes: 200 x23
- HTTP version: HTTP/2 x23
cf-cache-status: DYNAMIC x23
| Measure | min | median | mean | p95 | max |
|---|---|---|---|---|---|
TTFB (time_starttransfer) | 91.81 | 451.46 | 575.81 | 1276.26 | 1633.59 |
Whole response (time_total) | 92.21 | 452.64 | 576.93 | 1277.63 | 1634.48 |
DNS (time_namelookup) | 1.92 | 2.22 | 2.45 | 3.20 | 3.27 |
TCP connect (time_connect) | 22.05 | 188.69 | 140.83 | 227.84 | 242.60 |
TLS handshake (time_appconnect) | 49.13 | 306.14 | 294.81 | 651.72 | 773.90 |
Ready to send (time_pretransfer) | 49.19 | 306.36 | 294.98 | 651.92 | 774.32 |
All values are milliseconds.
Warm-up requests. They are shown here and left out of the table above.
| Request | TTFB | Whole response | Status |
|---|---|---|---|
| 1 | 196.81 | 197.14 | 200 |
| 2 | 106.02 | 106.31 | 200 |
| 3 | 87.73 | 88.03 | 200 |
Network floor, browser to Rails API, public internet, connection reused
The same network floor with the connection already open. No page ever calls /up, so this is not the cost of a data fetch.
- URL:
https://api.jodapp.com/up - Connection shape: connection reused
- Requests: 3 warm-up, 20 measured
- Connections opened: 1
- Status codes: 200 x23
- HTTP version: HTTP/2 x23
cf-cache-status: DYNAMIC x23
| Measure | min | median | mean | p95 | max |
|---|---|---|---|---|---|
TTFB (time_starttransfer) | 377.74 | 381.95 | 399.03 | 437.43 | 460.93 |
Whole response (time_total) | 378.97 | 382.72 | 400.12 | 438.56 | 462.04 |
DNS (time_namelookup) | 0.02 | 0.04 | 0.04 | 0.05 | 0.08 |
TCP connect (time_connect) | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 |
TLS handshake (time_appconnect) | not used | not used | not used | not used | not used |
Ready to send (time_pretransfer) | 0.10 | 0.23 | 0.23 | 0.37 | 0.40 |
All values are milliseconds.
The TLS row says "not used" because no TLS handshake happened. Either the request went over plain HTTP, or the connection was already open.
Warm-up requests. They are shown here and left out of the table above.
| Request | TTFB | Whole response | Status |
|---|---|---|---|
| 1 | 832.30 | 833.59 | 200 |
| 2 | 377.75 | 378.82 | 200 |
| 3 | 379.43 | 380.42 | 200 |
In this measurement request 1 also opened the connection. That is why it is slower than the rest.
One real signed-in fetch, public internet, new connection each time
What the first real clientLoader() API call costs. It pays DNS, TCP and TLS on top of the Rails work.
- URL:
https://api.jodapp.com/identities/sessions/current - Connection shape: new connection each time
- Requests: 3 warm-up, 20 measured
- Connections opened: 23
- Status codes: 200 x23
- HTTP version: HTTP/2 x23
cf-cache-status: DYNAMIC x23- Sent a session cookie. Its value is not in this report.
| Measure | min | median | mean | p95 | max |
|---|---|---|---|---|---|
TTFB (time_starttransfer) | 99.93 | 422.16 | 523.01 | 1055.87 | 1808.12 |
Whole response (time_total) | 100.33 | 423.48 | 524.10 | 1057.25 | 1809.61 |
DNS (time_namelookup) | 1.93 | 2.82 | 2.67 | 3.33 | 3.73 |
TCP connect (time_connect) | 21.75 | 156.51 | 129.53 | 214.52 | 264.53 |
TLS handshake (time_appconnect) | 49.86 | 326.00 | 281.71 | 597.52 | 648.53 |
Ready to send (time_pretransfer) | 49.97 | 326.23 | 281.93 | 597.70 | 648.77 |
All values are milliseconds.
Warm-up requests. They are shown here and left out of the table above.
| Request | TTFB | Whole response | Status |
|---|---|---|---|
| 1 | 1260.97 | 1263.35 | 200 |
| 2 | 1018.49 | 1019.57 | 200 |
| 3 | 698.83 | 700.35 | 200 |
One real signed-in fetch, public internet, connection reused
What every later real clientLoader() API call costs. This is the number the decision rests on.
- URL:
https://api.jodapp.com/identities/sessions/current - Connection shape: connection reused
- Requests: 3 warm-up, 20 measured
- Connections opened: 1
- Status codes: 200 x23
- HTTP version: HTTP/2 x23
cf-cache-status: DYNAMIC x23- Sent a session cookie. Its value is not in this report.
| Measure | min | median | mean | p95 | max |
|---|---|---|---|---|---|
TTFB (time_starttransfer) | 38.33 | 41.70 | 44.75 | 48.33 | 99.07 |
Whole response (time_total) | 39.26 | 42.44 | 49.82 | 99.44 | 133.10 |
DNS (time_namelookup) | 0.01 | 0.03 | 0.03 | 0.03 | 0.04 |
TCP connect (time_connect) | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 |
TLS handshake (time_appconnect) | not used | not used | not used | not used | not used |
Ready to send (time_pretransfer) | 0.05 | 0.20 | 0.18 | 0.24 | 0.34 |
All values are milliseconds.
The TLS row says "not used" because no TLS handshake happened. Either the request went over plain HTTP, or the connection was already open.
Warm-up requests. They are shown here and left out of the table above.
| Request | TTFB | Whole response | Status |
|---|---|---|---|
| 1 | 117.33 | 120.41 | 200 |
| 2 | 40.13 | 40.38 | 200 |
| 3 | 39.92 | 40.89 | 200 |
In this measurement request 1 also opened the connection. That is why it is slower than the rest.
Public page /up, the control, new connection each time
The smallest cost any page request can have from this network. It runs no loader and no session code.
- URL:
https://jodapp.com/up - Connection shape: new connection each time
- Requests: 3 warm-up, 20 measured
- Connections opened: 23
- Status codes: 200 x23
- HTTP version: HTTP/2 x23
cf-cache-status: DYNAMIC x23
| Measure | min | median | mean | p95 | max |
|---|---|---|---|---|---|
TTFB (time_starttransfer) | 94.51 | 155.15 | 434.78 | 1006.17 | 1855.24 |
Whole response (time_total) | 94.86 | 156.34 | 436.15 | 1007.51 | 1858.45 |
DNS (time_namelookup) | 1.83 | 2.25 | 2.45 | 3.20 | 3.28 |
TCP connect (time_connect) | 21.53 | 61.37 | 103.72 | 214.69 | 285.64 |
TLS handshake (time_appconnect) | 46.48 | 90.47 | 202.21 | 414.44 | 840.23 |
Ready to send (time_pretransfer) | 46.55 | 90.57 | 202.37 | 414.65 | 840.47 |
All values are milliseconds.
Warm-up requests. They are shown here and left out of the table above.
| Request | TTFB | Whole response | Status |
|---|---|---|---|
| 1 | 2265.96 | 2268.65 | 200 |
| 2 | 186.12 | 187.61 | 200 |
| 3 | 1155.50 | 1155.89 | 200 |
Public page /up, the control, connection reused
The same control without DNS, TCP and TLS.
- URL:
https://jodapp.com/up - Connection shape: connection reused
- Requests: 3 warm-up, 20 measured
- Connections opened: 1
- Status codes: 200 x23
- HTTP version: HTTP/2 x23
cf-cache-status: DYNAMIC x23
| Measure | min | median | mean | p95 | max |
|---|---|---|---|---|---|
TTFB (time_starttransfer) | 331.70 | 337.85 | 344.77 | 366.08 | 368.41 |
Whole response (time_total) | 337.18 | 343.39 | 349.10 | 366.33 | 370.01 |
DNS (time_namelookup) | 0.01 | 0.03 | 0.04 | 0.07 | 0.07 |
TCP connect (time_connect) | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 |
TLS handshake (time_appconnect) | not used | not used | not used | not used | not used |
Ready to send (time_pretransfer) | 0.06 | 0.18 | 0.19 | 0.34 | 0.35 |
All values are milliseconds.
The TLS row says "not used" because no TLS handshake happened. Either the request went over plain HTTP, or the connection was already open.
Warm-up requests. They are shown here and left out of the table above.
| Request | TTFB | Whole response | Status |
|---|---|---|---|
| 1 | 797.94 | 799.41 | 200 |
| 2 | 340.55 | 346.40 | 200 |
| 3 | 337.32 | 339.22 | 200 |
In this measurement request 1 also opened the connection. That is why it is slower than the rest.
Public page /privacy, new connection each time
What a first-time visitor waits for a light page.
- URL:
https://jodapp.com/privacy - Connection shape: new connection each time
- Requests: 3 warm-up, 20 measured
- Connections opened: 23
- Status codes: 200 x23
- HTTP version: HTTP/2 x23
cf-cache-status: DYNAMIC x23
| Measure | min | median | mean | p95 | max |
|---|---|---|---|---|---|
TTFB (time_starttransfer) | 623.77 | 1319.97 | 1360.65 | 1998.15 | 4463.99 |
Whole response (time_total) | 624.65 | 1499.41 | 1470.95 | 2147.90 | 5062.70 |
DNS (time_namelookup) | 2.02 | 2.56 | 2.60 | 3.37 | 3.42 |
TCP connect (time_connect) | 21.95 | 179.39 | 128.73 | 208.79 | 213.09 |
TLS handshake (time_appconnect) | 49.22 | 386.62 | 306.97 | 436.61 | 909.92 |
Ready to send (time_pretransfer) | 49.31 | 386.85 | 307.20 | 436.75 | 910.10 |
All values are milliseconds.
Warm-up requests. They are shown here and left out of the table above.
| Request | TTFB | Whole response | Status |
|---|---|---|---|
| 1 | 2107.86 | 2469.79 | 200 |
| 2 | 612.05 | 613.46 | 200 |
| 3 | 707.57 | 708.95 | 200 |
Public page /privacy, connection reused
What a returning visitor waits for a light page.
- URL:
https://jodapp.com/privacy - Connection shape: connection reused
- Requests: 3 warm-up, 20 measured
- Connections opened: 1
- Status codes: 200 x23
- HTTP version: HTTP/2 x23
cf-cache-status: DYNAMIC x23
| Measure | min | median | mean | p95 | max |
|---|---|---|---|---|---|
TTFB (time_starttransfer) | 897.74 | 922.70 | 937.33 | 1017.59 | 1032.97 |
Whole response (time_total) | 1071.38 | 1085.85 | 1099.72 | 1174.81 | 1197.74 |
DNS (time_namelookup) | 0.02 | 0.05 | 0.05 | 0.05 | 0.07 |
TCP connect (time_connect) | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 |
TLS handshake (time_appconnect) | not used | not used | not used | not used | not used |
Ready to send (time_pretransfer) | 0.11 | 0.26 | 0.25 | 0.29 | 0.30 |
All values are milliseconds.
The TLS row says "not used" because no TLS handshake happened. Either the request went over plain HTTP, or the connection was already open.
Warm-up requests. They are shown here and left out of the table above.
| Request | TTFB | Whole response | Status |
|---|---|---|---|
| 1 | 1773.92 | 1845.99 | 200 |
| 2 | 906.83 | 1080.16 | 200 |
| 3 | 922.24 | 1091.00 | 200 |
In this measurement request 1 also opened the connection. That is why it is slower than the rest.
Public page /jobs, new connection each time
A public list page with real loader() work, measured from outside.
- URL:
https://jodapp.com/jobs - Connection shape: new connection each time
- Requests: 3 warm-up, 20 measured
- Connections opened: 23
- Status codes: 200 x23
- HTTP version: HTTP/2 x23
cf-cache-status: DYNAMIC x23
| Measure | min | median | mean | p95 | max |
|---|---|---|---|---|---|
TTFB (time_starttransfer) | 655.19 | 1295.36 | 1254.97 | 1965.63 | 2073.42 |
Whole response (time_total) | 657.11 | 1302.34 | 1266.41 | 2055.79 | 2074.68 |
DNS (time_namelookup) | 1.87 | 3.04 | 2.80 | 3.47 | 3.82 |
TCP connect (time_connect) | 21.69 | 176.28 | 136.07 | 213.06 | 233.30 |
TLS handshake (time_appconnect) | 49.02 | 398.03 | 351.73 | 617.80 | 1325.48 |
Ready to send (time_pretransfer) | 49.10 | 398.25 | 351.91 | 618.01 | 1325.75 |
All values are milliseconds.
Warm-up requests. They are shown here and left out of the table above.
| Request | TTFB | Whole response | Status |
|---|---|---|---|
| 1 | 934.16 | 935.56 | 200 |
| 2 | 1128.40 | 1130.56 | 200 |
| 3 | 870.59 | 872.11 | 200 |
Public page /jobs, connection reused
The same page without DNS, TCP and TLS.
- URL:
https://jodapp.com/jobs - Connection shape: connection reused
- Requests: 3 warm-up, 20 measured
- Connections opened: 1
- Status codes: 200 x23
- HTTP version: HTTP/2 x23
cf-cache-status: DYNAMIC x23
| Measure | min | median | mean | p95 | max |
|---|---|---|---|---|---|
TTFB (time_starttransfer) | 580.52 | 608.30 | 634.75 | 730.88 | 764.30 |
Whole response (time_total) | 583.94 | 610.44 | 636.52 | 732.33 | 767.51 |
DNS (time_namelookup) | 0.01 | 0.04 | 0.04 | 0.06 | 0.14 |
TCP connect (time_connect) | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 |
TLS handshake (time_appconnect) | not used | not used | not used | not used | not used |
Ready to send (time_pretransfer) | 0.07 | 0.22 | 0.19 | 0.27 | 0.34 |
All values are milliseconds.
The TLS row says "not used" because no TLS handshake happened. Either the request went over plain HTTP, or the connection was already open.
Warm-up requests. They are shown here and left out of the table above.
| Request | TTFB | Whole response | Status |
|---|---|---|---|
| 1 | 646.10 | 647.16 | 200 |
| 2 | 588.95 | 591.75 | 200 |
| 3 | 687.31 | 688.96 | 200 |
In this measurement request 1 also opened the connection. That is why it is slower than the rest.
Public page /employers/dashboard, signed in, connection reused
The real employer journey, measured from outside.
- URL:
https://jodapp.com/employers/dashboard - Connection shape: connection reused
- Requests: 3 warm-up, 20 measured
- Connections opened: 1
- Status codes: 200 x23
- HTTP version: HTTP/2 x23
cf-cache-status: DYNAMIC x23- Sent a session cookie. Its value is not in this report.
| Measure | min | median | mean | p95 | max |
|---|---|---|---|---|---|
TTFB (time_starttransfer) | 375.32 | 422.11 | 555.07 | 1063.97 | 1477.82 |
Whole response (time_total) | 379.49 | 432.64 | 559.59 | 1068.14 | 1489.87 |
DNS (time_namelookup) | 0.03 | 0.04 | 0.04 | 0.05 | 0.06 |
TCP connect (time_connect) | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 |
TLS handshake (time_appconnect) | not used | not used | not used | not used | not used |
Ready to send (time_pretransfer) | 0.13 | 0.26 | 0.24 | 0.32 | 0.33 |
All values are milliseconds.
The TLS row says "not used" because no TLS handshake happened. Either the request went over plain HTTP, or the connection was already open.
Warm-up requests. They are shown here and left out of the table above.
| Request | TTFB | Whole response | Status |
|---|---|---|---|
| 1 | 816.49 | 820.05 | 200 |
| 2 | 386.20 | 387.29 | 200 |
| 3 | 370.94 | 374.91 | 200 |
In this measurement request 1 also opened the connection. That is why it is slower than the rest.
What these numbers mean for loader() and clientLoader()
| Question | Answer from this run |
|---|---|
What does one real API call from a clientLoader() cost? | 41.70 ms, median, on a connection that is already open |
| How much of that is network, Cloudflare and TLS? | 381.95 ms, median, the /up floor |
| How much of that is Rails work? | -340.25 ms |
| What does that real call cost when the connection is new? | 422.16 ms, median, including DNS, TCP and TLS |
| What does opening the connection add? | 380.46 ms |
| How much of the network floor is DNS? | 2.22 ms, median |
| How much of it is TCP? | 188.69 ms, median |
| How much of it is TLS? | 306.14 ms, median |
| What does the page shell cost on its own? | 343.39 ms, median, for /up |
| What does a light public page cost? | 1085.85 ms, median, for /privacy |
| What does a public list page cost? | 610.44 ms, median, for /jobs |
| What does the signed-in employer dashboard cost? | 432.64 ms, median |
Read it like this.
- One real API call from the browser costs about 41.70 ms once the connection is open. A
clientLoader()pays this on top of the page shell, and the user sees an empty area while it runs. - The real call was no slower than
/up. That is surprising for a call that reads the database. Check the status codes and the raw samples before you trust it. - The network on its own costs about 381.95 ms. That is
/up, which touches no database. No page ever calls it. It is the smallest cost this path can have, not a result. - The very first call to the API host costs about 380.46 ms more, because it pays DNS, TCP and TLS. A
clientLoader()on a fresh visit pays this. Aloader()never does, because the web server holds its connection open. - A
clientLoader()page has two waits. The shell arrives after about 343.39 ms. The data arrives about 41.70 ms after that. Total: about 385.09 ms before the page is complete. - A
loader()page has one wait./jobstakes about 610.44 ms, and it arrives complete. - On a first visit,
/jobscosts about 691.90 ms more, because the browser has to open a connection to the web host first.
The honest comparison needs both reports
This run measured the public path only. It cannot tell you what the web server pays to reach the Rails API, because that path lives inside the VPC.
Run the server-side mode on the web instance, then read the two reports together: --mode server --env prod
Compare the same endpoint on both paths. Not /up against /up.
| Shape | What the user waits for | Which number to use |
|---|---|---|
loader() | One wait. The page shell plus one private API call. | The real signed-in fetch, private name, connection reused. It is in the server-side report. |
clientLoader() | Two waits. The page shell first, then one public API call. | The real signed-in fetch, public internet, connection reused. It is in the table above. |
Both rows name the same endpoint. The only difference is the path it travels. That is the comparison the decision needs.
One more point that no benchmark can measure. A loader() sends finished HTML. A clientLoader() sends a shell, so search engines and link previews see an empty page unless something else fills it in.
The exact commands this run used
Each line below sends one request. The script sent the same request many times.
For a reused-connection measurement, the script passed every URL to one curl call. curl then kept the connection open between them.
Network floor, browser to Rails API, public internet, new connection each time
curl -sS -o /dev/null -D - --compressed --max-time 20 -A 'jod-latency-benchmark/1.0' -w 'TIMING %{time_namelookup} %{time_connect} %{time_appconnect} %{time_pretransfer} %{time_starttransfer} %{time_total} %{http_code} %{size_download} %{num_connects} %{http_version}' 'https://api.jodapp.com/up'
Network floor, browser to Rails API, public internet, connection reused
curl -sS -o /dev/null -D - --compressed --max-time 20 -A 'jod-latency-benchmark/1.0' -w 'TIMING %{time_namelookup} %{time_connect} %{time_appconnect} %{time_pretransfer} %{time_starttransfer} %{time_total} %{http_code} %{size_download} %{num_connects} %{http_version}' 'https://api.jodapp.com/up'
One real signed-in fetch, public internet, new connection each time
curl -sS -o /dev/null -D - --compressed --max-time 20 -A 'jod-latency-benchmark/1.0' -K cookie.conf -w 'TIMING %{time_namelookup} %{time_connect} %{time_appconnect} %{time_pretransfer} %{time_starttransfer} %{time_total} %{http_code} %{size_download} %{num_connects} %{http_version}' 'https://api.jodapp.com/identities/sessions/current'
About cookie.conf:
- It holds one line:
header = "Cookie: ...". - The quotes are required. In a curl config file an unquoted value stops at the first space, and a cookie header always has spaces in it.
- The script writes it into a private temporary folder, with file mode 600.
- The script deletes it when it exits.
- curl reads the cookie from that file, never from the command line. So the cookie never shows up in
psoutput.
One real signed-in fetch, public internet, connection reused
curl -sS -o /dev/null -D - --compressed --max-time 20 -A 'jod-latency-benchmark/1.0' -K cookie.conf -w 'TIMING %{time_namelookup} %{time_connect} %{time_appconnect} %{time_pretransfer} %{time_starttransfer} %{time_total} %{http_code} %{size_download} %{num_connects} %{http_version}' 'https://api.jodapp.com/identities/sessions/current'
About cookie.conf:
- It holds one line:
header = "Cookie: ...". - The quotes are required. In a curl config file an unquoted value stops at the first space, and a cookie header always has spaces in it.
- The script writes it into a private temporary folder, with file mode 600.
- The script deletes it when it exits.
- curl reads the cookie from that file, never from the command line. So the cookie never shows up in
psoutput.
Public page /up, the control, new connection each time
curl -sS -o /dev/null -D - --compressed --max-time 20 -A 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36 jod-latency-benchmark/1.0' -H 'Accept: text/html,application/xhtml+xml' -w 'TIMING %{time_namelookup} %{time_connect} %{time_appconnect} %{time_pretransfer} %{time_starttransfer} %{time_total} %{http_code} %{size_download} %{num_connects} %{http_version}' 'https://jodapp.com/up'
Public page /up, the control, connection reused
curl -sS -o /dev/null -D - --compressed --max-time 20 -A 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36 jod-latency-benchmark/1.0' -H 'Accept: text/html,application/xhtml+xml' -w 'TIMING %{time_namelookup} %{time_connect} %{time_appconnect} %{time_pretransfer} %{time_starttransfer} %{time_total} %{http_code} %{size_download} %{num_connects} %{http_version}' 'https://jodapp.com/up'
Public page /privacy, new connection each time
curl -sS -o /dev/null -D - --compressed --max-time 20 -A 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36 jod-latency-benchmark/1.0' -H 'Accept: text/html,application/xhtml+xml' -w 'TIMING %{time_namelookup} %{time_connect} %{time_appconnect} %{time_pretransfer} %{time_starttransfer} %{time_total} %{http_code} %{size_download} %{num_connects} %{http_version}' 'https://jodapp.com/privacy'
Public page /privacy, connection reused
curl -sS -o /dev/null -D - --compressed --max-time 20 -A 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36 jod-latency-benchmark/1.0' -H 'Accept: text/html,application/xhtml+xml' -w 'TIMING %{time_namelookup} %{time_connect} %{time_appconnect} %{time_pretransfer} %{time_starttransfer} %{time_total} %{http_code} %{size_download} %{num_connects} %{http_version}' 'https://jodapp.com/privacy'
Public page /jobs, new connection each time
curl -sS -o /dev/null -D - --compressed --max-time 20 -A 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36 jod-latency-benchmark/1.0' -H 'Accept: text/html,application/xhtml+xml' -w 'TIMING %{time_namelookup} %{time_connect} %{time_appconnect} %{time_pretransfer} %{time_starttransfer} %{time_total} %{http_code} %{size_download} %{num_connects} %{http_version}' 'https://jodapp.com/jobs'
Public page /jobs, connection reused
curl -sS -o /dev/null -D - --compressed --max-time 20 -A 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36 jod-latency-benchmark/1.0' -H 'Accept: text/html,application/xhtml+xml' -w 'TIMING %{time_namelookup} %{time_connect} %{time_appconnect} %{time_pretransfer} %{time_starttransfer} %{time_total} %{http_code} %{size_download} %{num_connects} %{http_version}' 'https://jodapp.com/jobs'
Public page /employers/dashboard, signed in, connection reused
curl -sS -o /dev/null -D - --compressed --max-time 20 -A 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36 jod-latency-benchmark/1.0' -H 'Accept: text/html,application/xhtml+xml' -K cookie.conf -w 'TIMING %{time_namelookup} %{time_connect} %{time_appconnect} %{time_pretransfer} %{time_starttransfer} %{time_total} %{http_code} %{size_download} %{num_connects} %{http_version}' 'https://jodapp.com/employers/dashboard'
About cookie.conf:
- It holds one line:
header = "Cookie: ...". - The quotes are required. In a curl config file an unquoted value stops at the first space, and a cookie header always has spaces in it.
- The script writes it into a private temporary folder, with file mode 600.
- The script deletes it when it exits.
- curl reads the cookie from that file, never from the command line. So the cookie never shows up in
psoutput.
How to reproduce this run
./jod-latency-benchmark.sh --mode client --env prod --samples 20 --warmup 3 --network "home fibre, jakarta, indihome"
Raw samples
Every request this run made, in the order it made them. Times are milliseconds.
Open the raw samples
Network floor, browser to Rails API, public internet, new connection each time
| Request | Kind | DNS | TCP | TLS | Ready to send | TTFB | Whole response | Status | Bytes | Connections | HTTP |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | warmup | 2.86 | 101.18 | 142.57 | 142.64 | 196.81 | 197.14 | 200 | 82 | 1 | 2 |
| 2 | warmup | 1.90 | 22.66 | 52.67 | 52.73 | 106.02 | 106.31 | 200 | 82 | 1 | 2 |
| 3 | warmup | 2.06 | 22.52 | 50.76 | 50.83 | 87.73 | 88.03 | 200 | 82 | 1 | 2 |
| 4 | sample | 1.94 | 212.62 | 263.72 | 263.93 | 331.88 | 332.81 | 200 | 82 | 1 | 2 |
| 5 | sample | 2.90 | 211.63 | 437.08 | 437.27 | 827.55 | 829.16 | 200 | 82 | 1 | 2 |
| 6 | sample | 1.98 | 22.05 | 56.50 | 56.58 | 108.86 | 109.16 | 200 | 82 | 1 | 2 |
| 7 | sample | 2.37 | 23.19 | 51.09 | 51.16 | 91.81 | 92.21 | 200 | 82 | 1 | 2 |
| 8 | sample | 1.96 | 227.84 | 437.22 | 437.44 | 1276.26 | 1277.63 | 200 | 82 | 1 | 2 |
| 9 | sample | 2.19 | 135.72 | 282.61 | 282.86 | 517.76 | 519.02 | 200 | 82 | 1 | 2 |
| 10 | sample | 2.91 | 22.81 | 52.82 | 52.91 | 96.83 | 98.32 | 200 | 82 | 1 | 2 |
| 11 | sample | 2.19 | 131.03 | 329.67 | 329.87 | 565.76 | 566.82 | 200 | 82 | 1 | 2 |
| 12 | sample | 2.89 | 242.60 | 773.90 | 774.31 | 1633.59 | 1634.48 | 200 | 82 | 1 | 2 |
| 13 | sample | 2.91 | 201.65 | 408.53 | 408.74 | 800.72 | 801.36 | 200 | 82 | 1 | 2 |
| 14 | sample | 2.15 | 23.21 | 49.13 | 49.19 | 99.76 | 100.07 | 200 | 82 | 1 | 2 |
| 15 | sample | 1.92 | 24.29 | 54.92 | 54.98 | 223.75 | 225.81 | 200 | 82 | 1 | 2 |
| 16 | sample | 2.25 | 22.92 | 55.63 | 55.71 | 95.16 | 95.54 | 200 | 82 | 1 | 2 |
| 17 | sample | 2.06 | 199.27 | 410.51 | 410.70 | 889.01 | 892.56 | 200 | 82 | 1 | 2 |
| 18 | sample | 3.20 | 212.16 | 267.33 | 267.49 | 320.45 | 320.77 | 200 | 82 | 1 | 2 |
| 19 | sample | 2.08 | 214.21 | 651.72 | 651.92 | 1054.93 | 1056.23 | 200 | 82 | 1 | 2 |
| 20 | sample | 3.18 | 89.53 | 116.56 | 116.67 | 160.16 | 161.28 | 200 | 82 | 1 | 2 |
| 21 | sample | 2.39 | 178.10 | 408.49 | 408.69 | 1069.70 | 1070.91 | 200 | 82 | 1 | 2 |
| 22 | sample | 3.27 | 213.52 | 345.60 | 345.80 | 385.17 | 386.25 | 200 | 82 | 1 | 2 |
| 23 | sample | 2.17 | 208.18 | 443.16 | 443.40 | 967.11 | 968.17 | 200 | 82 | 1 | 2 |
Network floor, browser to Rails API, public internet, connection reused
| Request | Kind | DNS | TCP | TLS | Ready to send | TTFB | Whole response | Status | Bytes | Connections | HTTP |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | warmup | 2.35 | 194.00 | 448.62 | 448.76 | 832.30 | 833.59 | 200 | 82 | 1 | 2 |
| 2 | warmup | 0.05 | 0.00 | 0.00 | 0.25 | 377.75 | 378.82 | 200 | 82 | 0 | 2 |
| 3 | warmup | 0.05 | 0.00 | 0.00 | 0.25 | 379.43 | 380.42 | 200 | 82 | 0 | 2 |
| 4 | sample | 0.08 | 0.00 | 0.00 | 0.37 | 424.14 | 425.65 | 200 | 82 | 0 | 2 |
| 5 | sample | 0.03 | 0.00 | 0.00 | 0.17 | 381.11 | 381.99 | 200 | 82 | 0 | 2 |
| 6 | sample | 0.03 | 0.00 | 0.00 | 0.15 | 379.77 | 380.66 | 200 | 82 | 0 | 2 |
| 7 | sample | 0.04 | 0.00 | 0.00 | 0.40 | 379.53 | 380.50 | 200 | 82 | 0 | 2 |
| 8 | sample | 0.04 | 0.00 | 0.00 | 0.29 | 427.02 | 428.07 | 200 | 82 | 0 | 2 |
| 9 | sample | 0.05 | 0.00 | 0.00 | 0.31 | 380.97 | 381.90 | 200 | 82 | 0 | 2 |
| 10 | sample | 0.05 | 0.00 | 0.00 | 0.24 | 382.79 | 383.45 | 200 | 82 | 0 | 2 |
| 11 | sample | 0.03 | 0.00 | 0.00 | 0.22 | 378.84 | 380.42 | 200 | 82 | 0 | 2 |
| 12 | sample | 0.04 | 0.00 | 0.00 | 0.20 | 429.80 | 431.02 | 200 | 82 | 0 | 2 |
| 13 | sample | 0.05 | 0.00 | 0.00 | 0.26 | 378.87 | 379.81 | 200 | 82 | 0 | 2 |
| 14 | sample | 0.04 | 0.00 | 0.00 | 0.20 | 378.42 | 379.48 | 200 | 82 | 0 | 2 |
| 15 | sample | 0.04 | 0.00 | 0.00 | 0.24 | 377.74 | 378.97 | 200 | 82 | 0 | 2 |
| 16 | sample | 0.04 | 0.00 | 0.00 | 0.25 | 428.17 | 428.84 | 200 | 82 | 0 | 2 |
| 17 | sample | 0.03 | 0.00 | 0.00 | 0.13 | 437.43 | 438.56 | 200 | 82 | 0 | 2 |
| 18 | sample | 0.04 | 0.00 | 0.00 | 0.24 | 460.93 | 462.04 | 200 | 82 | 0 | 2 |
| 19 | sample | 0.05 | 0.00 | 0.00 | 0.26 | 384.98 | 386.12 | 200 | 82 | 0 | 2 |
| 20 | sample | 0.03 | 0.00 | 0.00 | 0.15 | 380.00 | 381.90 | 200 | 82 | 0 | 2 |
| 21 | sample | 0.04 | 0.00 | 0.00 | 0.19 | 424.95 | 426.46 | 200 | 82 | 0 | 2 |
| 22 | sample | 0.03 | 0.00 | 0.00 | 0.16 | 386.44 | 386.93 | 200 | 82 | 0 | 2 |
| 23 | sample | 0.02 | 0.00 | 0.00 | 0.10 | 378.60 | 379.70 | 200 | 82 | 0 | 2 |
One real signed-in fetch, public internet, new connection each time
| Request | Kind | DNS | TCP | TLS | Ready to send | TTFB | Whole response | Status | Bytes | Connections | HTTP |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | warmup | 2.08 | 214.84 | 745.57 | 745.82 | 1260.97 | 1263.35 | 200 | 182 | 1 | 2 |
| 2 | warmup | 1.91 | 186.61 | 386.55 | 386.82 | 1018.49 | 1019.57 | 200 | 182 | 1 | 2 |
| 3 | warmup | 2.93 | 177.34 | 362.05 | 362.28 | 698.83 | 700.35 | 200 | 182 | 1 | 2 |
| 4 | sample | 2.22 | 175.20 | 360.14 | 360.41 | 793.74 | 795.05 | 200 | 182 | 1 | 2 |
| 5 | sample | 3.08 | 25.86 | 53.05 | 53.17 | 114.66 | 116.24 | 200 | 182 | 1 | 2 |
| 6 | sample | 2.75 | 211.10 | 335.31 | 335.55 | 390.35 | 391.49 | 200 | 182 | 1 | 2 |
| 7 | sample | 3.16 | 22.78 | 53.40 | 53.51 | 99.93 | 100.33 | 200 | 182 | 1 | 2 |
| 8 | sample | 2.31 | 200.48 | 497.20 | 497.48 | 895.48 | 896.85 | 200 | 182 | 1 | 2 |
| 9 | sample | 3.73 | 23.83 | 51.51 | 51.62 | 104.78 | 105.16 | 200 | 182 | 1 | 2 |
| 10 | sample | 2.08 | 264.53 | 475.20 | 475.69 | 838.10 | 839.59 | 200 | 182 | 1 | 2 |
| 11 | sample | 3.08 | 23.60 | 49.86 | 49.97 | 100.17 | 101.74 | 200 | 182 | 1 | 2 |
| 12 | sample | 1.93 | 21.75 | 51.96 | 52.04 | 108.62 | 108.94 | 200 | 182 | 1 | 2 |
| 13 | sample | 2.01 | 212.14 | 550.96 | 551.40 | 1808.12 | 1809.61 | 200 | 182 | 1 | 2 |
| 14 | sample | 3.20 | 97.54 | 223.82 | 224.22 | 422.85 | 424.32 | 200 | 182 | 1 | 2 |
| 15 | sample | 3.27 | 23.45 | 54.00 | 54.11 | 121.37 | 121.79 | 200 | 182 | 1 | 2 |
| 16 | sample | 1.93 | 137.82 | 319.41 | 319.64 | 561.10 | 562.45 | 200 | 182 | 1 | 2 |
| 17 | sample | 2.93 | 23.56 | 50.91 | 51.04 | 100.67 | 101.03 | 200 | 182 | 1 | 2 |
| 18 | sample | 2.05 | 107.20 | 139.57 | 139.73 | 187.02 | 188.00 | 200 | 182 | 1 | 2 |
| 19 | sample | 2.08 | 208.88 | 597.52 | 597.70 | 998.89 | 1000.07 | 200 | 182 | 1 | 2 |
| 20 | sample | 3.33 | 210.37 | 332.58 | 332.82 | 550.94 | 552.06 | 200 | 182 | 1 | 2 |
| 21 | sample | 3.00 | 214.52 | 359.33 | 359.48 | 421.48 | 422.64 | 200 | 182 | 1 | 2 |
| 22 | sample | 2.44 | 175.66 | 429.98 | 430.30 | 786.08 | 787.34 | 200 | 182 | 1 | 2 |
| 23 | sample | 2.89 | 210.41 | 648.53 | 648.77 | 1055.87 | 1057.25 | 200 | 182 | 1 | 2 |
One real signed-in fetch, public internet, connection reused
| Request | Kind | DNS | TCP | TLS | Ready to send | TTFB | Whole response | Status | Bytes | Connections | HTTP |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | warmup | 2.23 | 42.65 | 70.71 | 70.79 | 117.33 | 120.41 | 200 | 182 | 1 | 2 |
| 2 | warmup | 0.01 | 0.00 | 0.00 | 0.07 | 40.13 | 40.38 | 200 | 182 | 0 | 2 |
| 3 | warmup | 0.01 | 0.00 | 0.00 | 0.07 | 39.92 | 40.89 | 200 | 182 | 0 | 2 |
| 4 | sample | 0.04 | 0.00 | 0.00 | 0.34 | 38.76 | 40.32 | 200 | 182 | 0 | 2 |
| 5 | sample | 0.03 | 0.00 | 0.00 | 0.21 | 40.54 | 41.34 | 200 | 182 | 0 | 2 |
| 6 | sample | 0.03 | 0.00 | 0.00 | 0.20 | 40.20 | 41.08 | 200 | 182 | 0 | 2 |
| 7 | sample | 0.03 | 0.00 | 0.00 | 0.23 | 42.61 | 43.21 | 200 | 182 | 0 | 2 |
| 8 | sample | 0.02 | 0.00 | 0.00 | 0.15 | 38.33 | 39.26 | 200 | 182 | 0 | 2 |
| 9 | sample | 0.03 | 0.00 | 0.00 | 0.21 | 42.21 | 43.00 | 200 | 182 | 0 | 2 |
| 10 | sample | 0.03 | 0.00 | 0.00 | 0.20 | 99.07 | 99.44 | 200 | 182 | 0 | 2 |
| 11 | sample | 0.02 | 0.00 | 0.00 | 0.15 | 45.28 | 46.22 | 200 | 182 | 0 | 2 |
| 12 | sample | 0.03 | 0.00 | 0.00 | 0.24 | 48.33 | 49.16 | 200 | 182 | 0 | 2 |
| 13 | sample | 0.03 | 0.00 | 0.00 | 0.22 | 41.18 | 41.72 | 200 | 182 | 0 | 2 |
| 14 | sample | 0.02 | 0.00 | 0.00 | 0.10 | 39.62 | 40.40 | 200 | 182 | 0 | 2 |
| 15 | sample | 0.03 | 0.00 | 0.00 | 0.24 | 41.08 | 41.94 | 200 | 182 | 0 | 2 |
| 16 | sample | 0.03 | 0.00 | 0.00 | 0.21 | 42.63 | 43.44 | 200 | 182 | 0 | 2 |
| 17 | sample | 0.03 | 0.00 | 0.00 | 0.20 | 40.88 | 41.47 | 200 | 182 | 0 | 2 |
| 18 | sample | 0.02 | 0.00 | 0.00 | 0.16 | 40.19 | 40.53 | 200 | 182 | 0 | 2 |
| 19 | sample | 0.01 | 0.00 | 0.00 | 0.11 | 43.58 | 43.75 | 200 | 182 | 0 | 2 |
| 20 | sample | 0.01 | 0.00 | 0.00 | 0.05 | 45.21 | 133.10 | 200 | 182 | 0 | 2 |
| 21 | sample | 0.02 | 0.00 | 0.00 | 0.10 | 42.90 | 43.23 | 200 | 182 | 0 | 2 |
| 22 | sample | 0.01 | 0.00 | 0.00 | 0.11 | 42.59 | 42.94 | 200 | 182 | 0 | 2 |
| 23 | sample | 0.03 | 0.00 | 0.00 | 0.14 | 39.77 | 40.83 | 200 | 182 | 0 | 2 |
Public page /up, the control, new connection each time
| Request | Kind | DNS | TCP | TLS | Ready to send | TTFB | Whole response | Status | Bytes | Connections | HTTP |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | warmup | 2.22 | 193.06 | 394.21 | 394.43 | 2265.96 | 2268.65 | 200 | 4742 | 1 | 2 |
| 2 | warmup | 2.81 | 23.65 | 124.12 | 124.26 | 186.12 | 187.61 | 200 | 4742 | 1 | 2 |
| 3 | warmup | 2.99 | 174.77 | 422.76 | 423.01 | 1155.50 | 1155.89 | 200 | 4742 | 1 | 2 |
| 4 | sample | 2.25 | 285.64 | 840.23 | 840.47 | 1855.24 | 1858.45 | 200 | 4742 | 1 | 2 |
| 5 | sample | 3.28 | 101.46 | 207.62 | 207.81 | 585.51 | 586.50 | 200 | 4742 | 1 | 2 |
| 6 | sample | 3.20 | 191.51 | 390.85 | 391.08 | 904.18 | 905.80 | 200 | 4741 | 1 | 2 |
| 7 | sample | 3.09 | 178.12 | 362.98 | 363.22 | 1006.17 | 1007.51 | 200 | 4742 | 1 | 2 |
| 8 | sample | 2.92 | 23.53 | 49.16 | 49.26 | 100.27 | 101.69 | 200 | 4742 | 1 | 2 |
| 9 | sample | 1.97 | 199.40 | 414.44 | 414.65 | 873.05 | 875.36 | 200 | 4742 | 1 | 2 |
| 10 | sample | 3.01 | 23.74 | 54.46 | 54.55 | 111.70 | 112.24 | 200 | 4742 | 1 | 2 |
| 11 | sample | 1.92 | 190.96 | 391.46 | 391.85 | 860.98 | 862.93 | 200 | 4742 | 1 | 2 |
| 12 | sample | 3.13 | 23.60 | 50.69 | 50.80 | 106.49 | 109.39 | 200 | 4740 | 1 | 2 |
| 13 | sample | 2.26 | 22.50 | 47.68 | 47.76 | 129.88 | 131.37 | 200 | 4742 | 1 | 2 |
| 14 | sample | 2.06 | 174.14 | 288.12 | 288.39 | 701.03 | 702.11 | 200 | 4741 | 1 | 2 |
| 15 | sample | 1.83 | 21.75 | 46.48 | 46.55 | 103.46 | 104.62 | 200 | 4742 | 1 | 2 |
| 16 | sample | 2.22 | 22.97 | 50.08 | 50.14 | 125.31 | 126.86 | 200 | 4742 | 1 | 2 |
| 17 | sample | 2.99 | 23.29 | 51.21 | 51.28 | 98.21 | 98.63 | 200 | 4742 | 1 | 2 |
| 18 | sample | 2.00 | 212.21 | 261.94 | 262.13 | 313.60 | 314.93 | 200 | 4743 | 1 | 2 |
| 19 | sample | 2.69 | 22.77 | 53.30 | 53.39 | 110.61 | 111.06 | 200 | 4742 | 1 | 2 |
| 20 | sample | 1.96 | 99.01 | 126.48 | 126.60 | 180.41 | 180.90 | 200 | 4742 | 1 | 2 |
| 21 | sample | 1.91 | 21.62 | 46.95 | 47.01 | 94.51 | 94.87 | 200 | 4742 | 1 | 2 |
| 22 | sample | 1.89 | 21.53 | 52.00 | 52.10 | 129.90 | 131.78 | 200 | 4742 | 1 | 2 |
| 23 | sample | 2.46 | 214.69 | 258.09 | 258.30 | 305.04 | 305.97 | 200 | 4742 | 1 | 2 |
Public page /up, the control, connection reused
| Request | Kind | DNS | TCP | TLS | Ready to send | TTFB | Whole response | Status | Bytes | Connections | HTTP |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | warmup | 2.34 | 265.83 | 453.28 | 453.70 | 797.94 | 799.41 | 200 | 4741 | 1 | 2 |
| 2 | warmup | 0.05 | 0.00 | 0.00 | 0.22 | 340.55 | 346.40 | 200 | 4742 | 0 | 2 |
| 3 | warmup | 0.02 | 0.00 | 0.00 | 0.10 | 337.32 | 339.22 | 200 | 4742 | 0 | 2 |
| 4 | sample | 0.05 | 0.00 | 0.00 | 0.18 | 352.93 | 355.26 | 200 | 4742 | 0 | 2 |
| 5 | sample | 0.07 | 0.00 | 0.00 | 0.29 | 334.58 | 339.98 | 200 | 4742 | 0 | 2 |
| 6 | sample | 0.04 | 0.00 | 0.00 | 0.27 | 331.70 | 337.18 | 200 | 4742 | 0 | 2 |
| 7 | sample | 0.02 | 0.00 | 0.00 | 0.14 | 368.41 | 370.01 | 200 | 4741 | 0 | 2 |
| 8 | sample | 0.03 | 0.00 | 0.00 | 0.17 | 333.51 | 341.36 | 200 | 4742 | 0 | 2 |
| 9 | sample | 0.04 | 0.00 | 0.00 | 0.19 | 338.19 | 344.55 | 200 | 4741 | 0 | 2 |
| 10 | sample | 0.03 | 0.00 | 0.00 | 0.15 | 359.75 | 361.11 | 200 | 4742 | 0 | 2 |
| 11 | sample | 0.01 | 0.00 | 0.00 | 0.06 | 334.97 | 339.56 | 200 | 4741 | 0 | 2 |
| 12 | sample | 0.02 | 0.00 | 0.00 | 0.17 | 339.77 | 351.58 | 200 | 4742 | 0 | 2 |
| 13 | sample | 0.06 | 0.00 | 0.00 | 0.33 | 358.78 | 360.20 | 200 | 4742 | 0 | 2 |
| 14 | sample | 0.04 | 0.00 | 0.00 | 0.26 | 336.45 | 342.23 | 200 | 4742 | 0 | 2 |
| 15 | sample | 0.03 | 0.00 | 0.00 | 0.19 | 332.97 | 338.33 | 200 | 4742 | 0 | 2 |
| 16 | sample | 0.07 | 0.00 | 0.00 | 0.34 | 366.08 | 366.33 | 200 | 4742 | 0 | 2 |
| 17 | sample | 0.01 | 0.00 | 0.00 | 0.06 | 337.52 | 341.67 | 200 | 4742 | 0 | 2 |
| 18 | sample | 0.06 | 0.00 | 0.00 | 0.25 | 335.45 | 341.77 | 200 | 4741 | 0 | 2 |
| 19 | sample | 0.05 | 0.00 | 0.00 | 0.35 | 363.05 | 363.42 | 200 | 4741 | 0 | 2 |
| 20 | sample | 0.01 | 0.00 | 0.00 | 0.09 | 335.73 | 341.86 | 200 | 4741 | 0 | 2 |
| 21 | sample | 0.01 | 0.00 | 0.00 | 0.10 | 341.95 | 346.07 | 200 | 4742 | 0 | 2 |
| 22 | sample | 0.03 | 0.00 | 0.00 | 0.18 | 360.92 | 361.61 | 200 | 4741 | 0 | 2 |
| 23 | sample | 0.02 | 0.00 | 0.00 | 0.09 | 332.70 | 337.89 | 200 | 4742 | 0 | 2 |
Public page /privacy, new connection each time
| Request | Kind | DNS | TCP | TLS | Ready to send | TTFB | Whole response | Status | Bytes | Connections | HTTP |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | warmup | 3.27 | 191.84 | 401.74 | 401.98 | 2107.86 | 2469.79 | 200 | 14887 | 1 | 2 |
| 2 | warmup | 1.99 | 22.29 | 48.50 | 48.58 | 612.05 | 613.46 | 200 | 14861 | 1 | 2 |
| 3 | warmup | 2.09 | 23.30 | 139.36 | 139.88 | 707.57 | 708.95 | 200 | 14863 | 1 | 2 |
| 4 | sample | 3.42 | 177.20 | 436.61 | 436.75 | 1670.86 | 1707.96 | 200 | 14886 | 1 | 2 |
| 5 | sample | 2.18 | 23.72 | 52.41 | 52.51 | 642.50 | 646.71 | 200 | 14863 | 1 | 2 |
| 6 | sample | 2.23 | 213.09 | 909.92 | 910.10 | 4463.99 | 5062.70 | 200 | 14888 | 1 | 2 |
| 7 | sample | 3.37 | 93.01 | 248.98 | 249.71 | 1033.74 | 1098.35 | 200 | 14890 | 1 | 2 |
| 8 | sample | 2.02 | 208.79 | 420.65 | 420.91 | 1355.17 | 1542.96 | 200 | 14886 | 1 | 2 |
| 9 | sample | 2.65 | 203.62 | 419.43 | 419.71 | 1718.57 | 1871.82 | 200 | 14815 | 1 | 2 |
| 10 | sample | 2.56 | 23.29 | 50.14 | 50.23 | 684.87 | 687.11 | 200 | 14861 | 1 | 2 |
| 11 | sample | 2.12 | 21.95 | 140.94 | 141.16 | 730.70 | 731.68 | 200 | 14864 | 1 | 2 |
| 12 | sample | 2.05 | 196.00 | 427.45 | 427.74 | 1998.15 | 2147.90 | 200 | 14886 | 1 | 2 |
| 13 | sample | 3.17 | 23.45 | 49.22 | 49.31 | 704.26 | 708.34 | 200 | 14863 | 1 | 2 |
| 14 | sample | 2.32 | 189.96 | 388.59 | 388.86 | 1314.91 | 1500.25 | 200 | 14888 | 1 | 2 |
| 15 | sample | 3.10 | 26.26 | 148.68 | 149.30 | 745.10 | 748.96 | 200 | 14862 | 1 | 2 |
| 16 | sample | 2.34 | 191.66 | 416.04 | 416.32 | 1349.55 | 1530.42 | 200 | 14885 | 1 | 2 |
| 17 | sample | 2.71 | 23.66 | 51.83 | 51.91 | 623.77 | 624.65 | 200 | 14863 | 1 | 2 |
| 18 | sample | 2.57 | 22.25 | 51.09 | 51.19 | 802.01 | 804.20 | 200 | 14865 | 1 | 2 |
| 19 | sample | 2.06 | 174.45 | 357.04 | 357.18 | 1619.86 | 1635.69 | 200 | 14890 | 1 | 2 |
| 20 | sample | 3.22 | 181.58 | 389.78 | 389.94 | 1262.88 | 1433.30 | 200 | 14890 | 1 | 2 |
| 21 | sample | 3.04 | 187.47 | 385.71 | 385.90 | 1577.58 | 1720.55 | 200 | 14887 | 1 | 2 |
| 22 | sample | 2.17 | 193.12 | 387.54 | 387.80 | 1589.41 | 1716.93 | 200 | 14887 | 1 | 2 |
| 23 | sample | 2.77 | 200.00 | 407.31 | 407.56 | 1325.03 | 1498.56 | 200 | 14885 | 1 | 2 |
Public page /privacy, connection reused
| Request | Kind | DNS | TCP | TLS | Ready to send | TTFB | Whole response | Status | Bytes | Connections | HTTP |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | warmup | 1.99 | 192.12 | 391.77 | 392.01 | 1773.92 | 1845.99 | 200 | 14887 | 1 | 2 |
| 2 | warmup | 0.05 | 0.00 | 0.00 | 0.30 | 906.83 | 1080.16 | 200 | 14888 | 0 | 2 |
| 3 | warmup | 0.04 | 0.00 | 0.00 | 0.20 | 922.24 | 1091.00 | 200 | 14885 | 0 | 2 |
| 4 | sample | 0.07 | 0.00 | 0.00 | 0.27 | 906.18 | 1077.88 | 200 | 14889 | 0 | 2 |
| 5 | sample | 0.05 | 0.00 | 0.00 | 0.28 | 908.90 | 1086.93 | 200 | 14888 | 0 | 2 |
| 6 | sample | 0.04 | 0.00 | 0.00 | 0.23 | 897.74 | 1071.38 | 200 | 14886 | 0 | 2 |
| 7 | sample | 0.05 | 0.00 | 0.00 | 0.28 | 904.50 | 1074.72 | 200 | 14889 | 0 | 2 |
| 8 | sample | 0.04 | 0.00 | 0.00 | 0.20 | 1017.59 | 1086.52 | 200 | 14888 | 0 | 2 |
| 9 | sample | 0.05 | 0.00 | 0.00 | 0.30 | 954.14 | 1174.81 | 200 | 14889 | 0 | 2 |
| 10 | sample | 0.05 | 0.00 | 0.00 | 0.26 | 955.35 | 1128.43 | 200 | 14889 | 0 | 2 |
| 11 | sample | 0.05 | 0.00 | 0.00 | 0.26 | 972.69 | 1083.60 | 200 | 14889 | 0 | 2 |
| 12 | sample | 0.05 | 0.00 | 0.00 | 0.26 | 1032.97 | 1138.76 | 200 | 14887 | 0 | 2 |
| 13 | sample | 0.05 | 0.00 | 0.00 | 0.29 | 918.46 | 1087.54 | 200 | 14888 | 0 | 2 |
| 14 | sample | 0.03 | 0.00 | 0.00 | 0.20 | 914.30 | 1087.61 | 200 | 14888 | 0 | 2 |
| 15 | sample | 0.05 | 0.00 | 0.00 | 0.28 | 911.34 | 1079.16 | 200 | 14888 | 0 | 2 |
| 16 | sample | 0.04 | 0.00 | 0.00 | 0.22 | 911.52 | 1085.19 | 200 | 14886 | 0 | 2 |
| 17 | sample | 0.05 | 0.00 | 0.00 | 0.23 | 927.14 | 1072.57 | 200 | 14889 | 0 | 2 |
| 18 | sample | 0.05 | 0.00 | 0.00 | 0.27 | 948.96 | 1197.74 | 200 | 14883 | 0 | 2 |
| 19 | sample | 0.05 | 0.00 | 0.00 | 0.27 | 926.94 | 1100.80 | 200 | 14889 | 0 | 2 |
| 20 | sample | 0.02 | 0.00 | 0.00 | 0.11 | 998.45 | 1120.07 | 200 | 14887 | 0 | 2 |
| 21 | sample | 0.05 | 0.00 | 0.00 | 0.27 | 927.04 | 1083.12 | 200 | 14889 | 0 | 2 |
| 22 | sample | 0.04 | 0.00 | 0.00 | 0.17 | 905.79 | 1077.85 | 200 | 14888 | 0 | 2 |
| 23 | sample | 0.05 | 0.00 | 0.00 | 0.28 | 906.70 | 1079.68 | 200 | 14889 | 0 | 2 |
Public page /jobs, new connection each time
| Request | Kind | DNS | TCP | TLS | Ready to send | TTFB | Whole response | Status | Bytes | Connections | HTTP |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | warmup | 2.14 | 237.97 | 295.92 | 296.10 | 934.16 | 935.56 | 200 | 15068 | 1 | 2 |
| 2 | warmup | 2.13 | 93.38 | 197.68 | 197.82 | 1128.40 | 1130.56 | 200 | 15067 | 1 | 2 |
| 3 | warmup | 2.73 | 213.04 | 264.35 | 264.54 | 870.59 | 872.11 | 200 | 15066 | 1 | 2 |
| 4 | sample | 1.88 | 201.36 | 408.93 | 409.15 | 1404.78 | 1407.07 | 200 | 15067 | 1 | 2 |
| 5 | sample | 3.82 | 212.68 | 1325.48 | 1325.75 | 2073.42 | 2074.68 | 200 | 15067 | 1 | 2 |
| 6 | sample | 2.14 | 213.06 | 617.80 | 618.01 | 1586.61 | 1593.34 | 200 | 15067 | 1 | 2 |
| 7 | sample | 3.12 | 24.44 | 52.97 | 53.06 | 662.65 | 663.95 | 200 | 15067 | 1 | 2 |
| 8 | sample | 3.47 | 23.98 | 51.98 | 52.08 | 823.87 | 825.94 | 200 | 15067 | 1 | 2 |
| 9 | sample | 3.14 | 23.67 | 49.87 | 49.98 | 655.19 | 657.11 | 200 | 15067 | 1 | 2 |
| 10 | sample | 3.10 | 208.75 | 394.33 | 394.55 | 1279.92 | 1289.36 | 200 | 15067 | 1 | 2 |
| 11 | sample | 3.10 | 24.09 | 52.58 | 52.70 | 709.68 | 713.61 | 200 | 15066 | 1 | 2 |
| 12 | sample | 3.01 | 22.01 | 54.71 | 54.81 | 772.07 | 774.28 | 200 | 15067 | 1 | 2 |
| 13 | sample | 2.08 | 177.19 | 362.51 | 362.76 | 1288.99 | 1293.32 | 200 | 15066 | 1 | 2 |
| 14 | sample | 3.06 | 171.90 | 273.02 | 273.19 | 1222.25 | 1223.65 | 200 | 15068 | 1 | 2 |
| 15 | sample | 2.84 | 204.17 | 487.40 | 487.67 | 1965.63 | 2055.79 | 200 | 15066 | 1 | 2 |
| 16 | sample | 3.30 | 144.25 | 485.62 | 485.85 | 1535.02 | 1597.79 | 200 | 15098 | 1 | 2 |
| 17 | sample | 2.52 | 175.36 | 421.14 | 421.48 | 1506.83 | 1508.85 | 200 | 15066 | 1 | 2 |
| 18 | sample | 2.14 | 21.69 | 49.02 | 49.10 | 686.76 | 688.80 | 200 | 15067 | 1 | 2 |
| 19 | sample | 2.14 | 233.30 | 440.12 | 440.27 | 1825.45 | 1838.33 | 200 | 15067 | 1 | 2 |
| 20 | sample | 3.19 | 201.80 | 459.40 | 459.57 | 1579.79 | 1589.13 | 200 | 15067 | 1 | 2 |
| 21 | sample | 3.02 | 212.55 | 592.03 | 592.25 | 1559.54 | 1560.94 | 200 | 15066 | 1 | 2 |
| 22 | sample | 3.12 | 23.38 | 53.91 | 54.01 | 659.17 | 660.87 | 200 | 15067 | 1 | 2 |
| 23 | sample | 1.87 | 201.83 | 401.73 | 401.96 | 1301.73 | 1311.36 | 200 | 15065 | 1 | 2 |
Public page /jobs, connection reused
| Request | Kind | DNS | TCP | TLS | Ready to send | TTFB | Whole response | Status | Bytes | Connections | HTTP |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | warmup | 2.21 | 22.16 | 48.55 | 48.62 | 646.10 | 647.16 | 200 | 15067 | 1 | 2 |
| 2 | warmup | 0.02 | 0.00 | 0.00 | 0.14 | 588.95 | 591.75 | 200 | 15067 | 0 | 2 |
| 3 | warmup | 0.03 | 0.00 | 0.00 | 0.17 | 687.31 | 688.96 | 200 | 15068 | 0 | 2 |
| 4 | sample | 0.14 | 0.00 | 0.00 | 0.34 | 595.53 | 596.04 | 200 | 15066 | 0 | 2 |
| 5 | sample | 0.01 | 0.00 | 0.00 | 0.07 | 580.52 | 583.94 | 200 | 15067 | 0 | 2 |
| 6 | sample | 0.02 | 0.00 | 0.00 | 0.10 | 607.05 | 610.59 | 200 | 15065 | 0 | 2 |
| 7 | sample | 0.05 | 0.00 | 0.00 | 0.22 | 591.46 | 592.32 | 200 | 15066 | 0 | 2 |
| 8 | sample | 0.03 | 0.00 | 0.00 | 0.14 | 593.04 | 594.08 | 200 | 15065 | 0 | 2 |
| 9 | sample | 0.04 | 0.00 | 0.00 | 0.20 | 689.43 | 691.52 | 200 | 15066 | 0 | 2 |
| 10 | sample | 0.05 | 0.00 | 0.00 | 0.20 | 593.17 | 594.04 | 200 | 15068 | 0 | 2 |
| 11 | sample | 0.03 | 0.00 | 0.00 | 0.16 | 592.97 | 594.61 | 200 | 15066 | 0 | 2 |
| 12 | sample | 0.05 | 0.00 | 0.00 | 0.23 | 664.59 | 666.04 | 200 | 15068 | 0 | 2 |
| 13 | sample | 0.05 | 0.00 | 0.00 | 0.23 | 591.06 | 595.35 | 200 | 15067 | 0 | 2 |
| 14 | sample | 0.02 | 0.00 | 0.00 | 0.11 | 692.72 | 694.14 | 200 | 15066 | 0 | 2 |
| 15 | sample | 0.05 | 0.00 | 0.00 | 0.27 | 671.27 | 673.40 | 200 | 15067 | 0 | 2 |
| 16 | sample | 0.05 | 0.00 | 0.00 | 0.22 | 597.39 | 599.16 | 200 | 15067 | 0 | 2 |
| 17 | sample | 0.02 | 0.00 | 0.00 | 0.09 | 613.14 | 614.59 | 200 | 15067 | 0 | 2 |
| 18 | sample | 0.05 | 0.00 | 0.00 | 0.26 | 730.88 | 732.33 | 200 | 15067 | 0 | 2 |
| 19 | sample | 0.05 | 0.00 | 0.00 | 0.24 | 671.67 | 673.04 | 200 | 15065 | 0 | 2 |
| 20 | sample | 0.04 | 0.00 | 0.00 | 0.23 | 656.19 | 656.99 | 200 | 15067 | 0 | 2 |
| 21 | sample | 0.03 | 0.00 | 0.00 | 0.14 | 764.30 | 767.51 | 200 | 15066 | 0 | 2 |
| 22 | sample | 0.06 | 0.00 | 0.00 | 0.23 | 589.04 | 590.39 | 200 | 15067 | 0 | 2 |
| 23 | sample | 0.05 | 0.00 | 0.00 | 0.22 | 609.55 | 610.29 | 200 | 15067 | 0 | 2 |
Public page /employers/dashboard, signed in, connection reused
| Request | Kind | DNS | TCP | TLS | Ready to send | TTFB | Whole response | Status | Bytes | Connections | HTTP |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | warmup | 1.98 | 102.29 | 299.97 | 300.24 | 816.49 | 820.05 | 200 | 7511 | 1 | 2 |
| 2 | warmup | 0.03 | 0.00 | 0.00 | 0.14 | 386.20 | 387.29 | 200 | 7512 | 0 | 2 |
| 3 | warmup | 0.04 | 0.00 | 0.00 | 0.26 | 370.94 | 374.91 | 200 | 7509 | 0 | 2 |
| 4 | sample | 0.04 | 0.00 | 0.00 | 0.21 | 406.69 | 409.80 | 200 | 7510 | 0 | 2 |
| 5 | sample | 0.03 | 0.00 | 0.00 | 0.15 | 396.10 | 397.44 | 200 | 7511 | 0 | 2 |
| 6 | sample | 0.05 | 0.00 | 0.00 | 0.26 | 522.95 | 523.78 | 200 | 7511 | 0 | 2 |
| 7 | sample | 0.03 | 0.00 | 0.00 | 0.17 | 568.14 | 569.41 | 200 | 7512 | 0 | 2 |
| 8 | sample | 0.06 | 0.00 | 0.00 | 0.32 | 782.82 | 786.62 | 200 | 7511 | 0 | 2 |
| 9 | sample | 0.05 | 0.00 | 0.00 | 0.30 | 375.32 | 379.49 | 200 | 7512 | 0 | 2 |
| 10 | sample | 0.03 | 0.00 | 0.00 | 0.13 | 383.34 | 386.58 | 200 | 7511 | 0 | 2 |
| 11 | sample | 0.03 | 0.00 | 0.00 | 0.23 | 390.39 | 391.54 | 200 | 7512 | 0 | 2 |
| 12 | sample | 0.05 | 0.00 | 0.00 | 0.26 | 376.34 | 381.30 | 200 | 7511 | 0 | 2 |
| 13 | sample | 0.03 | 0.00 | 0.00 | 0.18 | 436.37 | 437.53 | 200 | 7512 | 0 | 2 |
| 14 | sample | 0.05 | 0.00 | 0.00 | 0.28 | 1477.82 | 1489.87 | 200 | 7486 | 0 | 2 |
| 15 | sample | 0.05 | 0.00 | 0.00 | 0.33 | 417.76 | 444.73 | 200 | 7486 | 0 | 2 |
| 16 | sample | 0.05 | 0.00 | 0.00 | 0.26 | 1063.97 | 1068.14 | 200 | 7511 | 0 | 2 |
| 17 | sample | 0.05 | 0.00 | 0.00 | 0.27 | 840.05 | 843.54 | 200 | 7511 | 0 | 2 |
| 18 | sample | 0.05 | 0.00 | 0.00 | 0.27 | 417.47 | 418.81 | 200 | 7512 | 0 | 2 |
| 19 | sample | 0.05 | 0.00 | 0.00 | 0.28 | 407.87 | 411.41 | 200 | 7513 | 0 | 2 |
| 20 | sample | 0.04 | 0.00 | 0.00 | 0.19 | 387.44 | 391.26 | 200 | 7511 | 0 | 2 |
| 21 | sample | 0.05 | 0.00 | 0.00 | 0.25 | 560.94 | 568.39 | 200 | 7511 | 0 | 2 |
| 22 | sample | 0.03 | 0.00 | 0.00 | 0.14 | 463.19 | 464.33 | 200 | 7510 | 0 | 2 |
| 23 | sample | 0.04 | 0.00 | 0.00 | 0.25 | 426.46 | 427.75 | 200 | 7512 | 0 | 2 |