Ruby GServer性能

Ped*_*der 2 ruby performance

我通过实现最基本的服务器测试了GServer的性能,并检查了它可以处理的每秒请求数.结果是81.与我最基本的TCPSocket服务器可以处理的每秒9900个请求相比,这是非常慢的.我做错了什么或者GServer真的这么慢吗?

客户实施:

require 'socket'
tStart = Time.now
u = 0
while Time.now - tStart<5
    socket = TCPSocket.open('localhost', 1234)
    socket.puts 'a'
    socket.gets
    socket.close
    u += 1
end
puts u.to_s
Run Code Online (Sandbox Code Playgroud)

GServer实施:

require 'gserver'
class JServer < GServer
    def initialize(*args)
        super(*args)
    end

    def serve( io )
        io.gets
        io.puts( 'a' )
    end
end
server = JServer.new(1234)
server.start
loop { break if server.stopped? }
Run Code Online (Sandbox Code Playgroud)

TCPSocket服务器实现:

require 'socket'
server = TCPServer.open(1234)
loop {
    client = server.accept
    puts client.gets
    client.puts( 'a' )
    client.close
}
Run Code Online (Sandbox Code Playgroud)

Jus*_*tin 5

您应该通过更换获得显着的加速(从我的测试中大约30倍)

loop {break if server.stopped?}

server.join

话虽这么说,GServer使用线程,可能比单线程基于事件的服务器慢.