[ruby-core:69730] [Ruby trunk - Feature #11298] [PATCH] socket: memoize common socket families in fptr->mode

From: funny.falcon@...
Date: 2015-06-24 09:10:47 UTC
List: ruby-core #69730
Issue #11298 has been updated by Yura Sokolov.


Did you make a mistake, or `after` is really slower?

----------------------------------------
Feature #11298: [PATCH] socket: memoize common socket families in fptr->mode
https://bugs.ruby-lang.org/issues/11298#change-53111

* Author: Eric Wong
* Status: Open
* Priority: Normal
* Assignee: Akira Tanaka
----------------------------------------
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--------------------------------
0001-socket-memoize-common-socket-families-in-fptr-mode.patch (4.95 KB)


-- 
https://bugs.ruby-lang.org/

In This Thread

Prev Next