liburlparser Benchmarks

One section per operation, one subsection per language - C++ and its competitors, then Python and its competitors, never mixed on the same chart.

Generated 2026-10-01 13:32 UTC Corpus: 10000 domains, 10000 URLs C++ results: present Python results: present

Extract domain/suffix from a host extract_from_host

C++

Library Throughput (MB/s) Ops/sec Success
liburlparser 88.63 7,528,703 100%

Python

Library Throughput (MB/s) Ops/sec Success
liburlparser 18.59 1,578,979 100%
PyDomainExtractor 36.42 3,093,948 100%
publicsuffix2 6.05 514,155 100%
tldextract 3.77 319,884 100%
tld 1.89 160,500 100%

Extract domain/suffix from a full URL extract_from_url

Python

Library Throughput (MB/s) Ops/sec Success
liburlparser 38.90 977,968 100%
PyDomainExtractor 102.64 2,580,546 100%
tldextract 10.62 267,085 100%
tld 6.38 160,287 100%

Parse a full URL parse_url

C++

Library Throughput (MB/s) Ops/sec Success
liburlparser 221.00 5,556,482 100%
ada 211.43 5,316,038 100%

Python

Library Throughput (MB/s) Ops/sec Success
liburlparser 29.01 729,395 100%
can_ada 37.74 948,969 100%

IDNA: Unicode host → ASCII/Punycode idna_normalize

C++

Library Throughput (MB/s) Ops/sec Success
liburlparser 75.29 5,882,353 100%
ada 27.53 2,150,538 100%

Python

Library Throughput (MB/s) Ops/sec Success
liburlparser 17.60 1,264,902 100%
can_ada 12.20 876,667 100%

Percent-decode ("unquote") percent_decode

C++

Library Throughput (MB/s) Ops/sec Success
liburlparser 410.00 20,000,000 100%

Python

Library Throughput (MB/s) Ops/sec Success
liburlparser 71.58 3,491,925 100%
urllib.parse 6.54 318,875 100%

Percent-encode ("quote") percent_encode

C++

Library Throughput (MB/s) Ops/sec Success
liburlparser 136.36 10,909,091 100%

Python

Library Throughput (MB/s) Ops/sec Success
liburlparser 33.33 2,666,193 100%
urllib.parse 7.95 636,115 100%

Resolve a URL reference (RFC 3986 §5) resolve

C++

Library Throughput (MB/s) Ops/sec Success
liburlparser 96.74 2,790,698 100%
ada 99.05 2,857,143 100%

Python

Library Throughput (MB/s) Ops/sec Success
liburlparser 16.45 474,411 100%
ada_url 10.90 314,441 100%

Parse a git/scp-like remote address parse_git_url

C++

Library Throughput (MB/s) Ops/sec Success
liburlparser 200.80 4,800,000 100%

Python

Library Throughput (MB/s) Ops/sec Success
liburlparser 20.75 495,927 100%
giturlparse 3.01 71,902 100%

Normalize a URL (default port, IDNA, dot-segments) normalize

C++

Library Throughput (MB/s) Ops/sec Success
liburlparser 64.49 2,448,980 100%
ada 105.33 4,000,000 100%

Python

Library Throughput (MB/s) Ops/sec Success
liburlparser 20.33 772,032 100%
ada_url 8.34 316,537 100%

Query string → decoded key/values map search_params

C++

Library Throughput (MB/s) Ops/sec Success
liburlparser 77.14 1,428,571 100%
ada 120.00 2,222,222 100%

Python

Library Throughput (MB/s) Ops/sec Success
liburlparser 24.60 455,605 100%
ada_url 4.95 91,676 100%

Key/value pairs → query string build_search_params

C++

Library Throughput (MB/s) Ops/sec Success
liburlparser 255.00 5,000,000 100%
ada 92.73 1,818,182 100%

Python

Library Throughput (MB/s) Ops/sec Success
liburlparser 22.38 447,618 100%
ada_url 5.78 115,677 100%