Skip to content

Commit 192a97f

Browse files
Astnclaude
andcommitted
README: sync table from an idle box
Two sweeps taken while no other session had a build or test running: 1 thread 4.5 to 4.6 M at 217 ns, 2 threads 7.6 to 9.5 M, 4 threads 16.4 to 17.4 M, 8 threads 25.1 to 26.8 M, 16 threads up to 35.8 M (the WSL-down run). The earlier 2-thread reading of 6 to 7 M was other sessions' load, not the library: pinned to distinct physical cores the two threads run at 210 ns each. The intro now says the WSL VM was shut down for the Kestrel and comparison rows specifically. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
1 parent 41371ec commit 192a97f

3 files changed

Lines changed: 27 additions & 27 deletions

File tree

‎README.md‎

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -238,7 +238,7 @@ dotnet run -c Release --project TestServer_Console # menu: Ente
238238
dotnet run --project samples/WasmHost # browser: "Run benchmark" on the page
239239
```
240240

241-
All numbers below are from an AMD Ryzen 7 7800X3D (8 cores / 16 threads, 4.2 GHz), 64 GB, Windows 11, .NET 10, Release, Server GC, with the built-in serializer, measured 2026-09-23 with the WSL virtual machine shut down (idle, it was taking 15 to 25 % of the box). Where a row gives two figures they are the spread over that day's runs. A single benchmark thread on this machine varies with whatever else lands on its core's SMT sibling, so the 1-thread rows are from runs on an idle core.
241+
All numbers below are from an AMD Ryzen 7 7800X3D (8 cores / 16 threads, 4.2 GHz), 64 GB, Windows 11, .NET 10, Release, Server GC, with the built-in serializer, measured 2026-09-23. Where a row gives two figures they are the spread over that day's runs on an otherwise idle machine; the WSL virtual machine, which takes 15 to 25 % of the box when idle, was shut down for the Kestrel and comparison runs. A single benchmark thread on this machine varies with whatever else lands on its core's SMT sibling, so the 1-thread rows are from runs on an idle core.
242242

243243
### Sync: the library alone
244244

@@ -248,11 +248,11 @@ All numbers below are from an AMD Ryzen 7 7800X3D (8 cores / 16 threads, 4.2 GHz
248248

249249
| Threads | RPC/s | ns per request per thread | Allocations per request |
250250
| ---: | ---: | ---: | --- |
251-
| 1 | 4.4 M to 4.6 M | 224 | 0 bytes for numeric shapes, one string for `StringMe` |
252-
| 2 | 6.0 M to 7.3 M | 276 | |
253-
| 4 | 12.6 M to 15.1 M | 265 | |
254-
| 8 | 23.6 M to 23.8 M | 336 | |
255-
| 16 | 31.2 M to 35.8 M | 446 | |
251+
| 1 | 4.5 M to 4.6 M | 217 | 0 bytes for numeric shapes, one string for `StringMe` |
252+
| 2 | 7.6 M to 9.5 M | 222 | |
253+
| 4 | 16.4 M to 17.4 M | 230 | |
254+
| 8 | 25.1 M to 26.8 M | 298 | |
255+
| 16 | 30.6 M to 35.8 M | 446 | |
256256

257257
Per-thread cost rises with thread count because the 16 threads share 8 physical cores.
258258

‎benchmarks/charts/render.py‎

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -108,11 +108,11 @@ def chart(title, subtitle, rows, filename, width=920):
108108
"JSON-RPC.Net alone, by thread count",
109109
"Byte entry point in a loop, no scheduler, no transport. 8 cores / 16 threads.",
110110
[
111-
("1 thread", 4.4e6, 4.6e6, "ours", "224 ns per request, 0 bytes allocated"),
112-
("2 threads", 6.0e6, 7.3e6, "ours", ""),
113-
("4 threads", 12.6e6, 15.1e6, "ours", ""),
114-
("8 threads", 23.6e6, 23.8e6, "ours", ""),
115-
("16 threads", 31.2e6, 35.8e6, "ours", "SMT: two threads per core"),
111+
("1 thread", 4.5e6, 4.6e6, "ours", "217 ns per request, 0 bytes allocated"),
112+
("2 threads", 7.6e6, 9.5e6, "ours", ""),
113+
("4 threads", 16.4e6, 17.4e6, "ours", ""),
114+
("8 threads", 25.1e6, 26.8e6, "ours", ""),
115+
("16 threads", 30.6e6, 35.8e6, "ours", "SMT: two threads per core"),
116116
],
117117
"sync-threads.svg",
118118
)

‎benchmarks/charts/sync-threads.svg‎

Lines changed: 16 additions & 16 deletions
Loading

0 commit comments

Comments
 (0)