WhiskeySour vs BeautifulSoup — Performance Report

Generated 2026-03-25 17:46:10  ·  100 rounds per benchmark  ·  Python 3.14.3

WhiskeySour (Rust/PyO3) BeautifulSoup 4 (html.parser)
10.5×
Avg speedup (WS vs BS4)
51.6×
Peak speedup
96%
Operations WS wins
45
Total benchmarks

small (~5KB)

parse
find (first tag)
find_all
find by id
find_all by class
CSS select
CSS select_one
get_text
serialize (str)
Operation WS mean WS min – max BS4 mean BS4 min – max Speedup
parse 0.4287 ms 0.4099 ms – 0.5550 ms 3.8784 ms 3.4578 ms – 7.7428 ms 9.0× faster
find (first tag) 0.0030 ms 0.0029 ms – 0.0048 ms 0.0066 ms 0.0063 ms – 0.0098 ms 2.2× faster
find_all 0.0419 ms 0.0414 ms – 0.0711 ms 0.0552 ms 0.0531 ms – 0.0935 ms 1.3× faster
find by id 0.0206 ms 0.0189 ms – 0.0571 ms 0.1989 ms 0.1914 ms – 0.3204 ms 9.7× faster
find_all by class 0.0484 ms 0.0460 ms – 0.1382 ms 0.3636 ms 0.3490 ms – 0.4768 ms 7.5× faster
CSS select 0.0431 ms 0.0409 ms – 0.1010 ms 0.4728 ms 0.4482 ms – 0.6381 ms 11.0× faster
CSS select_one 0.0018 ms 0.0017 ms – 0.0021 ms 0.0153 ms 0.0128 ms – 0.0427 ms 8.5× faster
get_text 0.0189 ms 0.0185 ms – 0.0223 ms 0.0699 ms 0.0679 ms – 0.1099 ms 3.7× faster
serialize (str) 0.0460 ms 0.0434 ms – 0.0927 ms 2.0843 ms 1.9920 ms – 2.4002 ms 45.4× faster

medium (~50KB)

parse
find (first tag)
find_all
find by id
find_all by class
CSS select
CSS select_one
get_text
serialize (str)
Operation WS mean WS min – max BS4 mean BS4 min – max Speedup
parse 3.0254 ms 2.9503 ms – 3.3468 ms 32.9381 ms 29.0399 ms – 38.3593 ms 10.9× faster
find (first tag) 0.0049 ms 0.0047 ms – 0.0060 ms 0.0071 ms 0.0067 ms – 0.0098 ms 1.4× faster
find_all 0.3616 ms 0.3589 ms – 0.3781 ms 0.4640 ms 0.4606 ms – 0.4803 ms 1.3× faster
find by id 0.1557 ms 0.1498 ms – 0.1987 ms 1.6824 ms 1.6625 ms – 1.8242 ms 10.8× faster
find_all by class 0.3842 ms 0.3748 ms – 0.5276 ms 3.2040 ms 3.1164 ms – 3.4877 ms 8.3× faster
CSS select 0.3590 ms 0.3450 ms – 0.4440 ms 4.0253 ms 3.9573 ms – 4.5367 ms 11.2× faster
CSS select_one 0.0036 ms 0.0035 ms – 0.0060 ms 0.0145 ms 0.0141 ms – 0.0185 ms 4.0× faster
get_text 0.1479 ms 0.1433 ms – 0.2205 ms 0.5844 ms 0.5795 ms – 0.6240 ms 4.0× faster
serialize (str) 0.3076 ms 0.2999 ms – 0.4181 ms 15.8725 ms 15.6405 ms – 17.4942 ms 51.6× faster

large (~300KB)

parse
find (first tag)
find_all
find by id
find_all by class
CSS select
CSS select_one
get_text
serialize (str)
Operation WS mean WS min – max BS4 mean BS4 min – max Speedup
parse 21.4722 ms 21.1490 ms – 22.8012 ms 226.7283 ms 181.5373 ms – 288.3177 ms 10.6× faster
find (first tag) 0.0037 ms 0.0035 ms – 0.0042 ms 0.0068 ms 0.0065 ms – 0.0079 ms 1.8× faster
find_all 2.6797 ms 2.0597 ms – 40.7027 ms 2.6958 ms 2.6502 ms – 3.1977 ms 1.0× faster
find by id 0.9348 ms 0.8794 ms – 1.1538 ms 10.0969 ms 9.9672 ms – 10.8175 ms 10.8× faster
find_all by class 2.4347 ms 2.1978 ms – 9.6407 ms 20.1065 ms 19.6920 ms – 21.1353 ms 8.3× faster
CSS select 2.2544 ms 2.0699 ms – 9.0335 ms 24.1455 ms 23.8268 ms – 25.7595 ms 10.7× faster
CSS select_one 0.0026 ms 0.0025 ms – 0.0030 ms 0.0133 ms 0.0131 ms – 0.0159 ms 5.2× faster
get_text 1.0371 ms 0.9173 ms – 1.5280 ms 3.7222 ms 3.5096 ms – 4.2317 ms 3.6× faster
serialize (str) 2.7168 ms 2.5942 ms – 2.9863 ms 97.5744 ms 95.9289 ms – 101.5110 ms 35.9× faster

deep nesting

parse
find (first tag)
find_all
find by id
find_all by class
CSS select
CSS select_one
get_text
serialize (str)
Operation WS mean WS min – max BS4 mean BS4 min – max Speedup
parse 0.0685 ms 0.0676 ms – 0.0908 ms 0.5021 ms 0.4876 ms – 0.5913 ms 7.3× faster
find (first tag) 0.0020 ms 0.0019 ms – 0.0022 ms 0.0078 ms 0.0075 ms – 0.0099 ms 3.9× faster
find_all 0.0124 ms 0.0121 ms – 0.0248 ms 0.0114 ms 0.0106 ms – 0.0319 ms 1.1× slower
find by id 0.0049 ms 0.0048 ms – 0.0051 ms 0.0341 ms 0.0337 ms – 0.0370 ms 7.0× faster
find_all by class 0.0073 ms 0.0069 ms – 0.0289 ms 0.0543 ms 0.0538 ms – 0.0577 ms 7.4× faster
CSS select 0.0114 ms 0.0112 ms – 0.0118 ms 0.0923 ms 0.0911 ms – 0.1035 ms 8.1× faster
CSS select_one 0.961 µs 0.916 µs – 0.0012 ms 0.0117 ms 0.0114 ms – 0.0173 ms 12.2× faster
get_text 0.0011 ms 0.0010 ms – 0.0012 ms 0.0076 ms 0.0075 ms – 0.0103 ms 6.9× faster
serialize (str) 0.0059 ms 0.0058 ms – 0.0060 ms 0.2655 ms 0.2586 ms – 0.3993 ms 45.2× faster

many attributes

parse
find (first tag)
find_all
find by id
find_all by class
CSS select
CSS select_one
get_text
serialize (str)
Operation WS mean WS min – max BS4 mean BS4 min – max Speedup
parse 1.5137 ms 1.4788 ms – 1.6680 ms 6.6122 ms 5.8872 ms – 46.9972 ms 4.4× faster
find (first tag) 0.0035 ms 0.0034 ms – 0.0038 ms 0.0057 ms 0.0053 ms – 0.0143 ms 1.6× faster
find_all 0.0667 ms 0.0655 ms – 0.0818 ms 0.0572 ms 0.0563 ms – 0.0755 ms 1.2× slower
find by id 0.0202 ms 0.0193 ms – 0.0272 ms 0.1829 ms 0.1806 ms – 0.2117 ms 9.1× faster
find_all by class 0.0758 ms 0.0754 ms – 0.0808 ms 0.4258 ms 0.4196 ms – 0.5440 ms 5.6× faster
CSS select 0.0668 ms 0.0647 ms – 0.0974 ms 0.5245 ms 0.5193 ms – 0.6128 ms 7.8× faster
CSS select_one 0.0024 ms 0.0023 ms – 0.0028 ms 0.0093 ms 0.0091 ms – 0.0103 ms 3.9× faster
get_text 0.0216 ms 0.0211 ms – 0.0268 ms 0.0746 ms 0.0740 ms – 0.0873 ms 3.5× faster
serialize (str) 0.1058 ms 0.1047 ms – 0.1178 ms 5.1652 ms 5.0990 ms – 5.8537 ms 48.8× faster