Project

General

Profile

« Previous | Next » 

Revision 416c50f5

Added by normal over 8 years ago

socket (bsock_recvmsg_internal): avoid arg parsing

  • ext/socket/ancdata.c (bsock_recvmsg_internal): avoid arg parsing
    (rsock_bsock_recvmsg): adjust for above change
    (rsock_bsock_recvmsg_nonblock): ditto
    [ruby-core:71439] [Feature #11339]
  • ext/socket/rubysocket.h: adjust prototypes for above
  • ext/socket/basicsocket.c (rsock_init_basicsocket):
    adjust private methods
  • ext/socket/lib/socket.rb (BasicSocket#recvmsg): wrapper method
    (BasicSocket#recvmsg_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]


recvmsg_nonblock

require 'socket'
nr = 1_000_000
i = 0
msg = '.'
buf = '.'
begin
r, w = UNIXSocket.pair(:SEQPACKET)
while i < nr
i += 1
w.sendmsg(msg)
r.recvmsg_nonblock(1, exception: false)
end
ensure
r.close
w.close
end


raw data:

[["recvmsg_nonblock",
[[3.721687912940979,
3.6072621569037437,
3.580637402832508,
3.614185404032469,
3.6029579415917397],
[2.4694008752703667,
2.4908322244882584,
2.5051278844475746,
2.5037173740565777,
2.548359278589487]]]]

Elapsed time: 30.646087052 (sec)

benchmark results:
minimum results in each 5 measurements.
Execution time (sec)
name a b
recvmsg_nonblock 3.581 2.469

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

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