LOAD-03DICOMweb (QIDO-RS, WADO-RS, STOW-RS)

Pass

No errors at any step; most steps at 32-64 clients were limited by the PC's CPU. The FileSystemDicomWebStore that ships as a reference store keeps every instance's metadata in memory: after 96,772 instances the server held 3,003 MB of managed memory (about 32 KB per instance), so a large archive needs its own IDicomWebStore.

What this test proves

Shows the speed of DicomKit's DICOMweb server and client under concurrent use, and that what comes back is correct.

How it was run

  1. An ASP.NET Core (Kestrel) app with MapDicomWeb and the FileSystemDicomWebStore runs in its own process, preloaded with 10,000 images (CT 512x512 and MR 256x256 in 400 studies).
  2. DicomWebClient runs each operation for 15 s with 1, 8, 32 and 64 concurrent clients: QIDO-RS study search, WADO-RS instance retrieval, WADO-RS rendered JPEG, STOW-RS of a new MR image.

How correctness was checked

Every QIDO-RS answer had the expected number of studies; every WADO-RS instance had the right pixel data length and the SHA-256 of every 50th was equal to the original; every rendered answer was a complete JPEG; every STOW-RS reported the image stored.

Measured results

Step Operations Ops/s MB/s p50 p95 p99 Max Errors Peak memory
QIDO-RS, 1 client 1,555 104 8.71 ms 14.4 ms 17.7 ms 119 ms 0 240 MB
QIDO-RS, 8 clients 12,938 862 9.16 ms 10.4 ms 11.6 ms 30 ms 0 294 MB
QIDO-RS, 32 clients
the PC's CPU was saturated (98 % on average)
32,460 2,163 14.4 ms 18.7 ms 23.1 ms 48.6 ms 0 366 MB
QIDO-RS, 64 clients
the PC's CPU was saturated (99 % on average)
33,379 2,223 26.6 ms 49.2 ms 65.9 ms 135 ms 0 302 MB
WADO-RS instance, 1 client 1,232 82.1 16.7 10 ms 19.3 ms 24.5 ms 46.3 ms 0 307 MB
WADO-RS instance, 8 clients 8,614 574 116 11.4 ms 22.2 ms 31.4 ms 334 ms 0 296 MB
WADO-RS instance, 32 clients
the PC's CPU was saturated (94 % on average)
17,485 1,163 234 21.9 ms 46 ms 58.3 ms 361 ms 0 295 MB
WADO-RS instance, 64 clients
the PC's CPU was saturated (95 % on average)
18,077 1,201 241 46.2 ms 102 ms 157 ms 474 ms 0 300 MB
WADO-RS rendered JPEG, 1 client 2,182 145 7.4 5.69 ms 10.9 ms 22.4 ms 53 ms 0 379 MB
WADO-RS rendered JPEG, 8 clients 14,574 971 48.7 6.77 ms 13 ms 26.3 ms 48.1 ms 0 399 MB
WADO-RS rendered JPEG, 32 clients
the PC's CPU was saturated (95 % on average)
31,168 2,074 104 12.2 ms 31.2 ms 43.7 ms 89.9 ms 0 505 MB
WADO-RS rendered JPEG, 64 clients
the PC's CPU was saturated (98 % on average)
33,159 2,204 111 26.1 ms 54.5 ms 71.9 ms 124 ms 0 523 MB
STOW-RS, 1 client 3,800 253 31.7 3.69 ms 5.54 ms 7.97 ms 33 ms 0 520 MB
STOW-RS, 8 clients 19,762 1,317 165 5.88 ms 6.76 ms 9.29 ms 60.3 ms 0 1,356 MB
STOW-RS, 32 clients 31,895 2,125 266 14.2 ms 18.4 ms 36.8 ms 99 ms 0 2,856 MB
STOW-RS, 64 clients 31,315 2,085 261 28.9 ms 41.4 ms 80.1 ms 101 ms 0 3,926 MB

Latency is per operation (p50 = median, p95/p99 = 95th/99th percentile). Memory is the peak working set of the test process.

Test run

Run
a20bedea-bacd-468b-af8d-945829c4b81f
Started (UTC)
2026-10-26 17:02:46, finished 2026-10-26 18:52:45
Test PC
Intel(R) Core(TM) i9-14900K, 24 cores / 32 threads, 64 GB RAM, NVMe SSD, Microsoft Windows 11 Pro build 26200.9711, .NET 10.0.12 (one PC, client and server on loopback)
License
Enterprise
Source commit
b804fb7
DicomKit
1.0.0 SHA-256 96ada39062c07bca37511abfb6baac0a44d914fb705bac01d77cb02146fdac0e
DicomKit.Imaging
1.0.0 SHA-256 015b51ea833039d934ba153cae50d393fb77846430ca3fc3d65b4fb8cf4346ed
DicomKit.Web
1.0.0 SHA-256 2a2f4f7f02e1849929294062bee7dd8f3a24449428469c1fddb6982e77218a7b
DicomKit.Web.AspNetCore
1.0.0 SHA-256 daa1105881f1c0b60ca9c788d52d41445bd653a9d190c8862a2b2b1386d5e37c