From bee5b49aece1499309b7e7bb6e8e373a1d67e4ce Mon Sep 17 00:00:00 2001 From: normal Date: Mon, 16 Nov 2015 23:40:15 +0000 Subject: 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 --- ChangeLog | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'ChangeLog') diff --git a/ChangeLog b/ChangeLog index 151188cc81..ac9061aa2d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,16 @@ +Tue Nov 17 08:36:34 2015 Eric Wong + + * 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 + Tue Nov 17 08:25:57 2015 Eric Wong * ext/socket/socket.c (sock_connect_nonblock): -- cgit v1.2.3