Skip to content

Commit 6de1536

Browse files
committed
Updated benchmark servers.
1 parent 6124350 commit 6de1536

File tree

5 files changed

+56
-12
lines changed

5 files changed

+56
-12
lines changed

benchmark/server/async.rb

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,19 +5,24 @@
55
# Copyright, 2021-2024, by Samuel Williams.
66

77
require "async"
8-
require "async/io/tcp_socket"
8+
require "socket"
9+
10+
RESPONSE = "HTTP/1.1 204 No Content\r\nXonnection: close\r\n\r\n"
911

1012
port = Integer(ARGV.pop || 9090)
1113

1214
Async do |task|
13-
server = Async::IO::TCPServer.new("localhost", port)
15+
server = TCPServer.new("localhost", port)
1416

1517
loop do
1618
peer, address = server.accept
1719

1820
task.async do
19-
peer.recv(1024)
20-
peer.send("HTTP/1.1 204 No Content\r\nConnection: close\r\n\r\n")
21+
while (peer.recv(1024) rescue nil)
22+
sleep 0.02
23+
peer.send(RESPONSE, 0)
24+
end
25+
ensure
2126
peer.close
2227
end
2328
end

benchmark/server/event.rb

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,24 +7,26 @@
77
require_relative "scheduler"
88
require "io/nonblock"
99

10+
RESPONSE = "HTTP/1.1 204 No Content\r\nConnection: close\r\n\r\n"
11+
1012
#scheduler = DirectScheduler.new
1113
scheduler = Scheduler.new
1214
Fiber.set_scheduler(scheduler)
1315

1416
port = Integer(ARGV.pop || 9090)
1517

16-
RESPONSE = "HTTP/1.1 204 No Content\r\nConnection: close\r\n\r\n"
17-
1818
Fiber.schedule do
1919
server = TCPServer.new("localhost", port)
2020
server.listen(Socket::SOMAXCONN)
2121

2222
loop do
2323
peer, address = server.accept
24-
24+
2525
Fiber.schedule do
26-
peer.readpartial(1024) rescue nil
27-
peer.write(RESPONSE)
26+
while (peer.readpartial(1024) rescue nil)
27+
peer.write(RESPONSE)
28+
end
29+
2830
peer.close
2931
end
3032
end

benchmark/server/gems.locked

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
GEM
2+
remote: https://rubygems.org/
3+
specs:
4+
async (2.23.1)
5+
console (~> 1.29)
6+
fiber-annotation
7+
io-event (~> 1.9)
8+
metrics (~> 0.12)
9+
traces (~> 0.15)
10+
console (1.30.2)
11+
fiber-annotation
12+
fiber-local (~> 1.1)
13+
json
14+
fiber-annotation (0.2.0)
15+
fiber-local (1.1.0)
16+
fiber-storage
17+
fiber-storage (1.0.0)
18+
io-event (1.10.0)
19+
json (2.10.2)
20+
metrics (0.12.2)
21+
traces (0.15.2)
22+
23+
PLATFORMS
24+
arm64-darwin-24
25+
ruby
26+
27+
DEPENDENCIES
28+
async
29+
30+
BUNDLED WITH
31+
2.6.2

benchmark/server/gems.rb

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
source "https://rubygems.org"
2+
3+
gem "async"

benchmark/server/loop.rb

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,18 @@
66

77
require "socket"
88

9-
port = Integer(ARGV.pop || 9090)
9+
RESPONSE = "HTTP/1.1 204 No Content\r\nConnection: close\r\n\r\n"
1010

11+
port = Integer(ARGV.pop || 9090)
1112
server = TCPServer.new("localhost", port)
1213

1314
loop do
1415
peer, address = server.accept
1516

16-
peer.recv(1024)
17-
peer.send("HTTP/1.1 204 No Content\r\nConnection: close\r\n\r\n", 0)
17+
while (peer.recv(1024) rescue nil)
18+
peer.send(RESPONSE, 0)
19+
end
20+
1821
peer.close
1922
end
2023

0 commit comments

Comments
 (0)