summaryrefslogtreecommitdiff
path: root/vm_opts.h
diff options
context:
space:
mode:
authorJohn Hawthorn <john@hawthorn.email>2025-08-19 19:13:00 -0700
committerJohn Hawthorn <john@hawthorn.email>2025-08-20 11:00:03 -0700
commit5c96bbf36a73e29561b2b1a0e42c6f3341a4e542 (patch)
tree0c748ab7b50824af1751c8a3bf4836ea86d18e6a /vm_opts.h
parent9d484e3412750580c85a6950a8304d8ad0b4d8d5 (diff)
Avoid spawning thread for trivial getnameinfo callsHEADmaster
When calling getnameinfo we spawn a thread because it may do a slow, blocking reverse-DNS lookup. Spawning a thread is relatively fast (~20µs on my Linux machine) but still an order of magnitude slower than when getnameinfo is simply translating to a numeric IP or port, which, at least in my tests on Linux, doesn't even make a syscall. This commit adds a fast path for when reverse DNS isn't required: either host isn't being fetched or NI_NUMERICHOST is set AND either the service name isn't required or NI_NUMERICSERV is set. The service name should only need to read /etc/services, which should be fast-ish, but is still I/O so I kept the existing behaviour (it could be on a network fs I guess). I tested with: s = TCPSocket.open("www.ruby-lang.org", 80) 500_000.times { Socket.unpack_sockaddr_in(s.getpeername) } Before: 12.935s After: 0.338s
Diffstat (limited to 'vm_opts.h')
0 files changed, 0 insertions, 0 deletions