以性能为中心替换python的urlparse模块
urlparse4的Python项目详细描述
urlparse4是以性能为中心的python替代品 {TT2} $模块,使用来自CL自己的URL解析器的C++代码。
它还没有准备好生产。
许多学分 gurl-cython用于 灵感。
与python的urlparse
不同urlparse4应该是透明的直接替换 案例。不过,还有一些不同之处需要注意:
- urlparse4对于大多数操作来说要快2-7倍(参见基准测试 下面)
- urlparse4当前未通过cpython的test_urlparse.py 套件,因为Chromium的解析器管理不同的边缘情况 (通常根据RFC,后面不跟urlparse的 完全)。
- urlparse4目前只支持Python2.7
如何测试
你必须安装并运行Docker。你可以运行cpython的测试 套房为urlparse,如下:
make docker_build make docker_test
基准
我们正在测试下面的libraries,样本来自 闪烁和dmoz:
它们中的每一个都在几种不同类型的操作上进行测试 (基本urlslit、相对链接解析、主机名提取)
下面是如何启动测试:
make docker_build make docker_benchmark
在2.2GHz Intel Core i7 Mbp上的当前结果(秒):
Benchmark results on 104300 URLs x 10 times, in seconds: Name Sum Mean Median 90% ---------------- ------------- ----------------- ----------------- ----------------- urlsplit: ---- ---- ---- ---- ---- urlparse4 1.681858 1.61251965484e-06 1.99999999984e-06 2.00000000006e-06 pygurl 2.031712 1.94795014382e-06 1.99999999984e-06 2.00000000028e-06 uritools 2.638991 2.53019271333e-06 2.00000000028e-06 3.00000000042e-06 yurl 3.910247 3.74903835091e-06 3.00000000131e-06 4.99999999981e-06 urlparse2 3.756782 3.60190028763e-06 2.99999999953e-06 4.00000000056e-06 urlparse 3.862006 3.70278619367e-06 3.00000000308e-06 4.99999999803e-06 cyuri 9.912275 9.50361936721e-06 8.00000000112e-06 1.30000000027e-05 urljoin_sibling: ---- ---- ---- ---- ---- urlparse4 2.008453 1.92565004794e-06 2.00000000206e-06 2.00000000206e-06 pygurl 2.193427 2.10299808245e-06 2.00000000206e-06 2.99999999953e-06 uritools 10.575344 1.01393518696e-05 9.99999999607e-06 1.20000000052e-05 yurl 13.213052 1.26683144775e-05 1.19999999981e-05 1.60000000022e-05 urlparse2 14.239327 1.36522790029e-05 1.19999999981e-05 1.69999999997e-05 urlparse 9.25991500001 8.87815436242e-06 8.00000000822e-06 1.10000000006e-05 cyuri 5.742724 5.50596740172e-06 5.00000000159e-06 7.00000001075e-06 hostname: ---- ---- ---- ---- ---- urlparse4 1.883982 1.80631064237e-06 1.99999999495e-06 2.00000000916e-06 pygurl 1.67332099999 1.60433461169e-06 1.99999999495e-06 2.00000000916e-06 uritools 3.31632199999 3.17959923297e-06 3.00000000664e-06 4.00000000411e-06 yurl 3.853319 3.69445733461e-06 3.00000000664e-06 4.00000000411e-06 urlparse2 4.641513 4.45015627996e-06 4.00000000411e-06 5.99999999906e-06 urlparse 5.122682 4.91148801534e-06 4.00000000411e-06 5.99999999906e-06 cyuri 11.108649 1.06506701822e-05 9.0000000057e-06 1.5999999988e-05
一些库包含在基准代码中,但对于 各种原因:
请随时提交请求以添加新请求!
反馈
我们很高兴听到你的反馈!请随意查看 github并在需要时打开新的:)