Skip to content

Commit 741478c

Browse files
samuel-williams-shopifyioquatix
authored andcommitted
Cleanup benchmark code.
1 parent 6de1536 commit 741478c

File tree

4 files changed

+15
-14
lines changed

4 files changed

+15
-14
lines changed

benchmark/server/event.rb

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,8 @@
2323
peer, address = server.accept
2424

2525
Fiber.schedule do
26-
while (peer.readpartial(1024) rescue nil)
27-
peer.write(RESPONSE)
28-
end
29-
26+
peer.recv(1024)
27+
peer.send(RESPONSE, 0)
3028
peer.close
3129
end
3230
end

benchmark/server/gems.rb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
# frozen_string_literal: true
2+
13
source "https://rubygems.org"
24

35
gem "async"

benchmark/server/scheduler.rb

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,7 @@ class Scheduler
1515
def initialize(selector = nil)
1616
@fiber = Fiber.current
1717
@selector = selector || IO::Event::Selector.new(@fiber)
18-
@pending = []
19-
@waiting = {}
18+
@waiting = 0
2019

2120
unless @selector.respond_to?(:io_close)
2221
instance_eval{undef io_close}
@@ -35,10 +34,10 @@ def unblock(blocker, fiber)
3534

3635
def io_wait(io, events, timeout)
3736
fiber = Fiber.current
38-
@waiting[fiber] = io
37+
@waiting += 1
3938
@selector.io_wait(fiber, io, events)
4039
ensure
41-
@waiting.delete(fiber)
40+
@waiting -= 1
4241
end
4342

4443
def io_close(io)
@@ -50,7 +49,7 @@ def kernel_sleep(duration)
5049
end
5150

5251
def close
53-
while @selector.ready? || @waiting.any?
52+
while @selector.ready? || @waiting > 0
5453
begin
5554
@selector.select(nil)
5655
rescue Errno::EINTR
@@ -73,17 +72,17 @@ def fiber(&block)
7372
class DirectScheduler < Scheduler
7473
def io_read(io, buffer, length)
7574
fiber = Fiber.current
76-
@waiting[fiber] = io
75+
@waiting += 1
7776
result = @selector.io_read(fiber, io, buffer, length)
7877
ensure
79-
@waiting.delete(fiber)
78+
@waiting -= 1
8079
end
8180

8281
def io_write(io, buffer, length)
8382
fiber = Fiber.current
84-
@waiting[fiber] = io
83+
@waiting += 1
8584
@selector.io_write(fiber, io, buffer, length)
8685
ensure
87-
@waiting.delete(fiber)
86+
@waiting -= 1
8887
end
8988
end

benchmark/server/thread.rb

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66

77
require "socket"
88

9+
RESPONSE = "HTTP/1.1 204 No Content\r\nConnection: close\r\n\r\n"
10+
911
port = Integer(ARGV.pop || 9090)
1012
server = TCPServer.new("localhost", port)
1113

@@ -14,7 +16,7 @@
1416

1517
Thread.new do
1618
peer.recv(1024)
17-
peer.send("HTTP/1.1 204 No Content\r\nConnection: close\r\n\r\n", 0)
19+
peer.send(RESPONSE, 0)
1820
peer.close
1921
end
2022
end

0 commit comments

Comments
 (0)