On Wednesday, April 9, 2003, at 01:49 PM, Martin v. L=F6wis wrote: > Marcus Mendenhall wrote: > >> The getsockaddr call uses them (actually the correct name for one of=20= >> the flags is AI_NUMERICHOST, not AI_NUMERIC as I originally stated),=20= >> and its part of the BSD sockets library, which is basically what the=20= >> python socketmodule wraps. > > More importantly, it is part of RFC 2553, which Python uses; it is = also > part of Winsock2. > >> I guess intercepting all numeric is OK, it is just less efficient=20 >> (since it requires a trial parsing of an address, which is wasted if=20= >> it is not all numeric), and because it is so easy to implement=20 >> <numeric>. > > But isn't the same trial parsing needed to determine presence of the=20= > "<numeric>" flag? The trial parsing Guido proposes usually stops with > the first letter in a non-numeric address, and accesses up to 16=20 > letters > for a numeric address. Yes, but a compare of the head of a string to a constant is probably=20 something which requires 1% of the cpu time of a sscanf. Just: if (string[0]=3D=3D'<' && not strncmp(string,"<numeric>",9)) {whatever} the first compare avoids even a subroutine call in the most likely case=20= (string does not begin with <numeric>) but then checks extremely=20 quickly if it is right after that. Even though cpu time is cheap, we should save it for useful work. Marcus
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4