curl performance tests
275 builds analyzed. Last run ended 2026-08-14 15:31:24 (Daniel's local time). This<br>page was rendered at 2026-08-14 13:31:25 UTC.
33 rounds
R0, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15, R16, R17, R18, R19, R20, R21, R22, R23, R24, R25, R26, R27, R28, R29, R30, R31, R32,<br>24 tests<br>100G-speed, single-numallocs, single-maxalloc, h1parallel-speed, h2parallel-speed, h3parallel-speed, h1parallel-mem, h2parallel-mem, h3parallel-mem, h1parallel-upload-speed, h2parallel-upload-speed, h3parallel-upload-speed, h1parallel-upload-mem, h2parallel-upload-mem, h3parallel-upload-mem, h1-requests, h2-requests, h3-requests, h1-req-mem, h2-req-mem, h3-req-mem, easy-handle, multi-handle, connectdata,<br>build details
R32 connections: use admin handles only for maintenance (5 builds)
R31 Revert "uint-bset: add slot0 member" (1 builds)
plus: 554efab7f6 multi: drop the assert from large expires
R30 multi: cap expire times to INT_MAX internally (9 builds)
plus: e825e55867 RELEASE-NOTES: synced
R29 dict: avoid busy-loop in sendf() when the socket is not writable (1 builds)
R28 test_20_11: more leniency (2 builds)
R27 libcurl.pc: Add Copyright tag to the pkgconf file (43 builds)
R26 tool_operate: refactor schannel checks and move win32 cert checks to function (9 builds)
R25 conncache: don't assume curl_off_t increment wrap-around (5 builds)
R24 tool_operate: limit `is_using_schannel()` call to Windows (10 builds)
R23 cmake: use built-in variable and target property dump functions with CMake 4.5+ (3 builds)
R22 multihandle: move two struct fields (5 builds)
R21 multi: hold timeout values in 'int' instead of 'long' (26 builds)
R20 header api: add guards (6 builds)
plus: 743096a496 uint-bset: add slot0 member
plus: 507ee5d792 progress: fix progress meter update to run every second again
R19 url: fix negotiate/ntlm connection reuse (15 builds)
R18 mailmap: Ralf Mueller (2 builds)
plus: 574749016d tests: verify AWS SigV4 redirect auth scope
R17 tidy-up: C and CI (2 builds)
R16 progress: cleanup, less memory (2 builds)
R15 keylog: add a random size argument to Curl_tls_keylog_write() (1 builds)
R14 thrdqueue: drop name strdups from Curl_thrdq_create (1 builds)
R13 urlapi: avoid dedotdotify() if possible (2 builds)
plus: da04aa96ab tidy-up: comments and formatting
R12 CI: dump `libcurl.pc` (and `curl-config`) to log, verify `.pc` with `pccritic` tool (2 builds)
R11 build: strip empty properties from `libcurl.pc` (4 builds)
R10 configure: replace stray raw `grep` with `$GREP` (1 builds)
R9 tool_operate: only check for schannel if on windows (1 builds)
plus: b9254da617 build: clear `Require.private` for static-only builds in `libcurl.pc`
R8 content_encoding: exact-match the identity transfer-coding token (52 builds)
R7 libcurl.pc: add `License` tag (7 builds)
R6 build: strip duplicate spaces after `Libs.private:` in `libcurl.pc` (10 builds)
R5 servers: add option to build without window handler (Windows) (2 builds)
R4 scorecard: report 'rss-max' (1 builds)
plus: 6c7993d4d9 build: strip trailing spaces from `libcurl.pc`
R3 schannel: reuse the send buffer (5 builds)
R2 ldap: reject control characters in URL-decoded filter values (12 builds)
plus: 874a54de5d multi: use index list for expire timeouts
plus: 1cf6be5a0b GHA/linux: replace raw C option with `CMAKE_BUILD_TYPE=Debug` in tsan job
plus: 43680a50cf appveyor: sync Debug options in two jobs
plus: a833c83a87 build: minor debug option message fixes/improvements
plus: 5ef4e1cabc checksrc: check for `assert`, replace in tests where missing, drop from examples
plus: 5050196dcc build: require `!NDEBUG` for debug-enabled (aka development) builds
R1 DoH: improvements (22 builds)
R0 build: replace `assert()` with `DEBUGASSERT()`, where missing (6 builds)
Download speed 100G single transfer HTTP:// (100G-speed)<br>higher is better, bytes/sec
275 samples, 33 rounds<br>P0: 4857984365 (4.86 G)<br>P25: 5408710863 (5.41 G)<br>P50: 5494526918 (5.49 G)<br>P75: 5567323381 (5.57 G)<br>P100: 5941451695 (5.94 G)<br>Mean: 5488973558 (5.49 G)<br>Std dev: 125428527 (125.43 M), 2.29% of mean<br>Span: +-541733665 (541.73 M), 9.87% of mean
Stake: 2026-08-11 initial ('stake' is a set typical value for this test)<br>5475738172 (5.48 G)<br>-13235386 (-13.24 M) from mean, (-0.24%) current results are BETTER<br>-18788746 (-18.79 M) from P50, (-0.34%) current results are BETTER
test description
Downloads a single 100 gigabyte file over clear-text HTTP/1.1 from an Apache<br>httpd server running on localhost with the curl tool. The measured network<br>transfer speed in bytes per second is what the curl tool itself reports.
Most recent 100 rounds
Data distribution<br>Data distribution
Full range<br>Full range
Downsamples the entire set to 20 data points.
Trend<br>Trend
Draws a trend-line for the full range set. The trend is only considered<br>statistically significant if the P value is less than 0.05.<br>Mann-Kendall says: statistically insignificant (P: 0.5813)
Allocations for...