-
-
Notifications
You must be signed in to change notification settings - Fork 933
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Optimized alternative to urllib.quote #134
Comments
Here's some benchmarks: http://paste.openstack.org/show/46739/ |
Things are especially slow in python 3, but are reasonably snappy under pypy. The first thing that comes to mind here is calling out to cffi using a C module for quoting and unquoting URLs. I found python-percentcoding on PyPI, but it doesn't work on Python 3 and it might not work on pypy, either. |
Thanks for taking a look! Good data points. |
I remember looking at the urllib.quote function a long time ago, because I hit the unicode bug in it. Check out the implementation: https://gist.github.com/syllog1sm/6656171 It's easy to see that this could be made more efficient, just by reimplementing it in a more straight-forward way. Looking at the falcon source, it seems this is only used in utils.percent_escape, right? So the set of reserved characters is fixed. That makes things much simpler. If the simple Python way isn't good enough, a Cython array would be very efficient. |
Oh, also, it seems you want urllib.parse.quote_from_bytes for Python 3? |
Cool, thanks for the tips! I ended up referencing py2 and py3 implementations of urllib and then wrote a lean-and-mean url encoder for Falcon. |
See if we can do better than ~2 us (and ~4 us on Py33)
The text was updated successfully, but these errors were encountered: