mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
This provides a minor speedup by avoiding an extra syscall
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.330000 0.340000 0.670000 ( 0.678235)
after: 0.290000 0.240000 0.530000 ( 0.534527)
* ext/socket/rubysocket.h: flags for common socket families
(rsock_getfamily): update signature
* include/ruby/io.h: comment socket FMODE flags
* ext/socket/init.c (rsock_getfamily): memoize family
* ext/socket/basicsocket.c: adjust rsock_getfamily calls
* ext/socket/ancdata.c: ditto
[ruby-core:69713] [Feature #11298]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51097 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
||
|---|---|---|
| .. | ||
| lib | ||
| .document | ||
| addrinfo.h | ||
| ancdata.c | ||
| basicsocket.c | ||
| constants.c | ||
| depend | ||
| extconf.rb | ||
| getaddrinfo.c | ||
| getnameinfo.c | ||
| ifaddr.c | ||
| init.c | ||
| ipsocket.c | ||
| mkconstants.rb | ||
| option.c | ||
| raddrinfo.c | ||
| rubysocket.h | ||
| socket.c | ||
| sockport.h | ||
| sockssocket.c | ||
| tcpserver.c | ||
| tcpsocket.c | ||
| udpsocket.c | ||
| unixserver.c | ||
| unixsocket.c | ||