Skip to content

curl/relative

master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

curl 8.0.0 is about to be released on 2023-03-20.[1][2]  Its minor
version number will be zero.

Script "run-many.sh" checks minor number of the version to use
"./sprinter-old" instead of regular "./sprinter" for versions older than
7.66.0.  This check will break for curl 8.0.0, because the script
doesn't check the major number, and zero is less than 66.

Prepare script "run-many.sh" for the upcoming release of curl 8.0.0.
Check both major and minor versions when choosing between "./sprinter"
and "./sprinter-old".

[1] https://curl.se/mail/lib-2023-02/0033.html
[2] curl/curl#10465
a4e9e67

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 
 
 
 
 

relative

Tools to measure libcurl performance delta between versions

build-many

This script iterates over all the curl versions listed in the top of the file and for each version it will build and install it locally. It will clone the git repository first if not present.

Each built libcurl version is installed in build/$version. The used build directory will be removed after install.

run-many

This script iterates over all the libcurl versions found installed in build/$version. For each such version, it will set LD_LIBRARY_PATH and then invoke ./sprinter to have that specific version performance tested.

If the found libcurl version is older than 7.66.0, the ./sprinter-old tool will instead be used (to use a different API).

sprinter

Downloads the same URL a given number of times, using a single thread and the libcurl multi interface. It uses a specified number of concurrent transfers.

The data is simply dropped on receival. If any transfer returns an error, the entire operation is canceled and an error message is shown.

Only use this tool against servers you have permission to torture.

Example using 8GB downloads

$ ./sprinter localhost/8GB 6 2
curl: 7.79.0-DEV
URL: localhost/8GB
Transfers: 6 [2 in parallel]...
Time: 8110158 us, 1351693.00 us/transfer
Freq: 0.74 requests/second
Downloaded: 51539608924 bytes, 48.0 GB
Speed: 6354945110.1 bytes/sec 6060.5 MB/s (8589934820 bytes/transfer)

Example using 4KB downloads

$ ./sprinter localhost/4KB 100000 100
curl: 7.79.0-DEV
URL: localhost/4KB
Transfers: 100000 [100 in parallel]...
Time: 4065449 us, 40.65 us/transfer
Freq: 24597.53 requests/second
Downloaded: 430255224 bytes, 0.4 GB
Speed: 105832153.8 bytes/sec 100.9 MB/s (4302 bytes/transfer)

About

Tools to measure libcurl performance delta between versions

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published