WhiskeySour (Rust/PyO3)
BeautifulSoup 4 (html.parser)
10.5×
Avg speedup (WS vs BS4)
small (~5KB)
| 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)
| 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)
| 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
| 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
| 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 |