]> git.ipfire.org Git - thirdparty/Python/cpython.git/commit
asyncio: Only call _check_resolved_address() in debug mode
authorVictor Stinner <victor.stinner@gmail.com>
Wed, 4 Feb 2015 13:51:23 +0000 (14:51 +0100)
committerVictor Stinner <victor.stinner@gmail.com>
Wed, 4 Feb 2015 13:51:23 +0000 (14:51 +0100)
commit2fc2313038cb2ef0f375808244783235b8ad6455
tree1b1e1b25ac82f667d97b7b5172d9d5c2e53e019a
parentaa41b9b22b139d241dd97f8baf0fda56fe719c36
asyncio: Only call _check_resolved_address() in debug mode

* _check_resolved_address() is implemented with getaddrinfo() which is slow
* If available, use socket.inet_pton() instead of socket.getaddrinfo(), because
  it is much faster

Microbenchmark (timeit) on Fedora 21 (Python 3.4, Linux 3.17, glibc 2.20) to
validate the IPV4 address "127.0.0.1" or the IPv6 address "::1":

* getaddrinfo() 10.4 usec per loop
* inet_pton(): 0.285 usec per loop

On glibc older than 2.14, getaddrinfo() always requests the list of all local
IP addresses to the kernel (using a NETLINK socket). getaddrinfo() has other
known issues, it's better to avoid it when it is possible.
Lib/asyncio/base_events.py
Lib/asyncio/proactor_events.py
Lib/asyncio/selector_events.py
Lib/test/test_asyncio/test_events.py