curl / Mailing Lists / curl-library / Single Mail


Re: Slow Windows uploads (with patch)

From: Daniel Jeliński <>
Date: Wed, 1 Aug 2018 16:38:02 +0200

2018-07-30 18:09 GMT+02:00 Daniel Stenberg <>:
> The tool could try upload with and without "the patch" to one/two/three
> places and report the results with the exact Windows version used. We could
> ask curl users to report *their* results and we collect the results in a
> sheet somewhere.

How about a CURL build? I built curl binaries with and without the
patch, which users could use for testing on their machines. These are
available for download here:

Running test is as simple as unpacking and launching testcurl.bat,
with possible extra step of installing MSVC 2010 redistributable. My
results from a few machines:
1. Windows 2008R2, Europe:
Microsoft Windows [Version 6.1.7601]
generating test file...
running vanilla...
start:0,592000 total:11,263000
running patched...
start:0,593000 total:3,432000

2. Windows 2012R2, USA:
Microsoft Windows [Version 6.3.9600]
generating test file...
running vanilla...
start:0.296000 total:2.921000
running patched...
start:0.297000 total:1.297000

3. Windows 2003, USA:
Microsoft Windows [Version 5.2.3790]
generating test file...
running vanilla...
start:0.281000 total:5.031000
running patched...
start:0.281000 total:5.000000

As expected, there's almost no difference on 2003. In both other cases
tested the difference was more than 100%.

Binaries were built with 32bit VS2010, using command line:
# nmake /f mode=dll GEN_PDB=yes

They will likely require MSVC redistributable, available here:
I tried linking MSVC statically (RTLIBCFG=static), but resulting
binary kept crashing on -w.

For those who don't feel comfortable running binaries downloaded from
the net, the sources are available on git (branches: master &
Jelinski/buffer-tuning-under-Windows), and here's the testcurl script:
@echo off
echo generating test file...
echo test >test
for /l %%i in (1,1,17) do ( type test>>test;)
echo running vanilla...
pushd curl_vanilla
curl -w"start:%%{time_starttransfer} total:%%{time_total}\n" -T ..\test
echo running patched...
pushd curl_patched
curl -w"start:%%{time_starttransfer} total:%%{time_total}\n" -T ..\test
del test
Received on 2018-08-01