-
- Downloads
Previously, processing a large batch of timeouts was O(n^2) in the number of
outstanding queries, and processing a DNS response packet was O(n) in the number of outstanding queries. To speed things up in Google, we added a few circular, doubly-linked lists of queries that are hash-bucketed based on the attributes we care about, so most important operations are now O(1). It might be that the number of buckets are higher than most people would need, but on a quick calculation it should only be 100kB or so even on a 64-bit system, so I've let it stay as-is.
Showing
- ares/ares_cancel.c 23 additions, 7 deletionsares/ares_cancel.c
- ares/ares_destroy.c 31 additions, 12 deletionsares/ares_destroy.c
- ares/ares_fds.c 4 additions, 1 deletionares/ares_fds.c
- ares/ares_getsock.c 1 addition, 1 deletionares/ares_getsock.c
- ares/ares_init.c 17 additions, 2 deletionsares/ares_init.c
- ares/ares_private.h 107 additions, 5 deletionsares/ares_private.h
- ares/ares_process.c 108 additions, 47 deletionsares/ares_process.c
- ares/ares_query.c 9 additions, 5 deletionsares/ares_query.c
- ares/ares_send.c 14 additions, 3 deletionsares/ares_send.c
- ares/ares_timeout.c 13 additions, 2 deletionsares/ares_timeout.c
Loading
Please register or sign in to comment