Project

General

Profile

« Previous | Next » 

Revision bee5b49a

Added by normal over 8 years ago

socket: avoid arg parsing in rsock_s_accept_nonblock

  • ext/socket/init.c (rsock_s_accept_nonblock): avoid parsing args
    [ruby-core:71439] [Feature #11339]
  • ext/socket/rubysocket.h: adjust prototype
  • ext/socket/socket.c (sock_accept_nonblock): make private
  • ext/socket/tcpserver.c (tcp_accept_nonblock): ditto
  • ext/socket/unixserver.c (unix_accept_nonblock): ditto
  • ext/socket/lib/socket.rb (Socket#accept_nonblock):
    implement as wrapper, move RDoc
    (TCPServer#accept_nonblock): ditto
    (UNIXServer#accept_nonblock): ditto

target 0: a (ruby 2.3.0dev (2015-11-12 trunk 52550) [x86_64-linux])
target 1: b (ruby 2.3.0dev (2015-11-12 avoid-kwarg-capi 52550) [x86_64-linux]


accept_nonblock

require 'tempfile'
require 'socket'
require 'io/wait'
nr = 500000
Tempfile.create(%w(accept_nonblock .sock)) do |tmp|
path = tmp.path
File.unlink(path)
s = UNIXServer.new(path)
addr = Socket.sockaddr_un(path).freeze
nr.times do
s.accept_nonblock(exception: false)
c = UNIXSocket.new(path)
s.wait_readable
s.accept_nonblock(exception: false).close
c.close
end
end


raw data:

[["accept_nonblock",
[[4.807877402752638,
4.930681671947241,
4.738454818725586,
4.69268161803484,
4.684675686061382],
[4.253904823213816,
4.255124930292368,
4.295955188572407,
4.248479191213846,
4.213303029537201]]]]

Elapsed time: 45.123040065 (sec)

benchmark results:
minimum results in each 5 measurements.
Execution time (sec)
name a b
accept_nonblock 4.685 4.213

Speedup ratio: compare with the result of `a' (greater is better)
name b
accept_nonblock 1.112

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52601 b2dd03c8-39d4-4d8f-98ff-823fe69b080e