Skip to content

Commit 8abaa92

Browse files
bluetechKriechi
authored andcommitted
Add a simple connection benchmark
1 parent f0f18cf commit 8abaa92

File tree

3 files changed

+61
-3
lines changed

3 files changed

+61
-3
lines changed

MANIFEST.in

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ graft compliance
33
graft example
44
graft docs
55
graft test
6+
graft bench
67
prune docs/build
78
prune compliance/reports
89
prune compliance/auto-tests-server-config.json

bench/connection.py

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
import random
2+
import time
3+
from typing import List
4+
5+
import wsproto
6+
7+
random_seed = 0
8+
mu = 125 * 1024
9+
sigma = 75 * 1024
10+
iterations = 5000
11+
per_message_deflate = False
12+
13+
14+
rand = random.Random(random_seed)
15+
16+
17+
client_extensions: List[wsproto.extensions.Extension] = []
18+
if per_message_deflate:
19+
pmd = wsproto.extensions.PerMessageDeflate()
20+
offer = pmd.offer()
21+
assert isinstance(offer, str)
22+
pmd.finalize(offer)
23+
client_extensions.append(pmd)
24+
client = wsproto.connection.Connection(
25+
wsproto.ConnectionType.CLIENT,
26+
extensions=client_extensions,
27+
)
28+
29+
30+
server_extensions: List[wsproto.extensions.Extension] = []
31+
if per_message_deflate:
32+
pmd = wsproto.extensions.PerMessageDeflate()
33+
offer = pmd.offer()
34+
assert isinstance(offer, str)
35+
pmd.accept(offer)
36+
server = wsproto.connection.Connection(
37+
wsproto.ConnectionType.SERVER,
38+
extensions=server_extensions,
39+
)
40+
41+
42+
start = time.perf_counter()
43+
for i in range(iterations):
44+
client_msg = b"0" * max(0, round(rand.gauss(mu, sigma)))
45+
client_out = client.send(wsproto.events.BytesMessage(client_msg))
46+
server.receive_data(client_out)
47+
for event in server.events():
48+
pass
49+
50+
server_msg = "0" * max(0, round(rand.gauss(mu, sigma)))
51+
server_out = server.send(wsproto.events.TextMessage(server_msg))
52+
client.receive_data(server_out)
53+
for event in client.events():
54+
pass
55+
end = time.perf_counter()
56+
57+
print(f"{end - start:.4f}s")

tox.ini

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,16 +34,16 @@ deps =
3434
black==20.8b1
3535
isort==5.4.2
3636
commands =
37-
black --check --diff src/ test/ example/ compliance/
38-
isort --check --diff src/ test/ example/ compliance/
37+
black --check --diff src/ test/ example/ compliance/ bench/
38+
isort --check --diff src/ test/ example/ compliance/ bench/
3939

4040
[testenv:mypy]
4141
basepython = python3.8
4242
deps =
4343
mypy==0.790
4444
pytest==6.1.2
4545
commands =
46-
mypy src/ test/ example/
46+
mypy src/ test/ example/ bench/
4747

4848
[testenv:lint]
4949
basepython = python3.8

0 commit comments

Comments
 (0)