Actions
Feature #11298
closed[PATCH] socket: memoize common socket families in fptr->mode
    Feature #11298:
    [PATCH] socket: memoize common socket families in fptr->mode
  
Description
I noticed an unnecesary getsockname() syscalls for every
sendmsg_nonblock call I make on SOCK_SEQPACKET pair.
This made for a noisy strace.
I also plan on following up and setting the flag on
rsock_init_* functions upon initialization.
And probably caching Addrinfo somehow on accepted sockets.
I'll commit this in a week or two if no comments.
  require 'socket'
  require 'benchmark'
  nr = 100000
  msg = 'hello world'
  buf = ''
  size = msg.bytesize
  puts(Benchmark.measure do
    UNIXSocket.pair(:SEQPACKET) do |a, b|
      nr.times do
        a.sendmsg_nonblock(msg, 0, exception: false)
        b.recv(size, 0, buf)
      end
    end
  end)
             user     system      total        real
before:  0.290000   0.240000   0.530000 (  0.534527)
 after:  0.330000   0.340000   0.670000 (  0.678235)
Files
Actions
        
        
     Updated by Anonymous
          Updated by Anonymous