diff options
Diffstat (limited to 'benchmark/bm_io_copy_stream_write_socket.rb')
-rw-r--r-- | benchmark/bm_io_copy_stream_write_socket.rb | 35 |
1 files changed, 0 insertions, 35 deletions
diff --git a/benchmark/bm_io_copy_stream_write_socket.rb b/benchmark/bm_io_copy_stream_write_socket.rb deleted file mode 100644 index 11f369bd0d..0000000000 --- a/benchmark/bm_io_copy_stream_write_socket.rb +++ /dev/null @@ -1,35 +0,0 @@ -# The goal of this is to use a synthetic (non-IO) reader -# to trigger the read/write loop of IO.copy_stream, -# bypassing in-kernel mechanisms like sendfile for zero copy, -# so we wrap the /dev/zero IO object: -class Zero - def initialize - @n = 100000 - @in = File.open('/dev/zero', 'rb') - end - - def read(len, buf) - return if (@n -= 1) == 0 - @in.read(len, buf) - end -end - -begin - require 'socket' - src = Zero.new - rd, wr = UNIXSocket.pair - pid = fork do - wr.close - buf = String.new - while rd.read(16384, buf) - end - end - rd.close - IO.copy_stream(src, wr) -rescue Errno::ENOENT, NotImplementedError, NameError - # not *nix: missing /dev/zero, fork, or UNIXSocket -rescue LoadError # no socket? -ensure - wr.close if wr - Process.waitpid(pid) if pid -end if IO.respond_to?(:copy_stream) |