Skip to content

Commit 1ba64e7

Browse files
authored
Run benchmark against all multidict implementations (#1106)
The PR just parametrizes existing benchmarks without adding any new code.
1 parent 389758e commit 1ba64e7

File tree

1 file changed

+37
-35
lines changed

1 file changed

+37
-35
lines changed

tests/test_views_benchmarks.py

+37-35
Original file line numberDiff line numberDiff line change
@@ -1,127 +1,129 @@
11
"""codspeed benchmarks for multidict views."""
22

3+
from typing import Type
4+
35
from pytest_codspeed import BenchmarkFixture
46

57
from multidict import MultiDict
68

79

8-
def test_keys_view_equals(benchmark: BenchmarkFixture) -> None:
9-
md1: MultiDict[str] = MultiDict({str(i): str(i) for i in range(100)})
10-
md2: MultiDict[str] = MultiDict({str(i): str(i) for i in range(100)})
10+
def test_keys_view_equals(benchmark: BenchmarkFixture, any_multidict_class: Type[MultiDict[str]]) -> None:
11+
md1: MultiDict[str] = any_multidict_class({str(i): str(i) for i in range(100)})
12+
md2: MultiDict[str] = any_multidict_class({str(i): str(i) for i in range(100)})
1113

1214
@benchmark
1315
def _run() -> None:
1416
assert md1.keys() == md2.keys()
1517

1618

17-
def test_keys_view_not_equals(benchmark: BenchmarkFixture) -> None:
18-
md1: MultiDict[str] = MultiDict({str(i): str(i) for i in range(100)})
19-
md2: MultiDict[str] = MultiDict({str(i): str(i) for i in range(20, 120)})
19+
def test_keys_view_not_equals(benchmark: BenchmarkFixture, any_multidict_class: Type[MultiDict[str]]) -> None:
20+
md1: MultiDict[str] = any_multidict_class({str(i): str(i) for i in range(100)})
21+
md2: MultiDict[str] = any_multidict_class({str(i): str(i) for i in range(20, 120)})
2022

2123
@benchmark
2224
def _run() -> None:
2325
assert md1.keys() != md2.keys()
2426

2527

26-
def test_keys_view_more(benchmark: BenchmarkFixture) -> None:
27-
md: MultiDict[str] = MultiDict({str(i): str(i) for i in range(100)})
28+
def test_keys_view_more(benchmark: BenchmarkFixture, any_multidict_class: Type[MultiDict[str]]) -> None:
29+
md: MultiDict[str] = any_multidict_class({str(i): str(i) for i in range(100)})
2830
s = {str(i) for i in range(50)}
2931

3032
@benchmark
3133
def _run() -> None:
3234
assert md.keys() > s
3335

3436

35-
def test_keys_view_more_or_equal(benchmark: BenchmarkFixture) -> None:
36-
md: MultiDict[str] = MultiDict({str(i): str(i) for i in range(100)})
37+
def test_keys_view_more_or_equal(benchmark: BenchmarkFixture, any_multidict_class: Type[MultiDict[str]]) -> None:
38+
md: MultiDict[str] = any_multidict_class({str(i): str(i) for i in range(100)})
3739
s = {str(i) for i in range(100)}
3840

3941
@benchmark
4042
def _run() -> None:
4143
assert md.keys() >= s
4244

4345

44-
def test_keys_view_less(benchmark: BenchmarkFixture) -> None:
45-
md: MultiDict[str] = MultiDict({str(i): str(i) for i in range(100)})
46+
def test_keys_view_less(benchmark: BenchmarkFixture, any_multidict_class: Type[MultiDict[str]]) -> None:
47+
md: MultiDict[str] = any_multidict_class({str(i): str(i) for i in range(100)})
4648
s = {str(i) for i in range(150)}
4749

4850
@benchmark
4951
def _run() -> None:
5052
assert md.keys() < s
5153

5254

53-
def test_keys_view_less_or_equal(benchmark: BenchmarkFixture) -> None:
54-
md: MultiDict[str] = MultiDict({str(i): str(i) for i in range(100)})
55+
def test_keys_view_less_or_equal(benchmark: BenchmarkFixture, any_multidict_class: Type[MultiDict[str]]) -> None:
56+
md: MultiDict[str] = any_multidict_class({str(i): str(i) for i in range(100)})
5557
s = {str(i) for i in range(100)}
5658

5759
@benchmark
5860
def _run() -> None:
5961
assert md.keys() <= s
6062

6163

62-
def test_keys_view_and(benchmark: BenchmarkFixture) -> None:
63-
md1: MultiDict[str] = MultiDict({str(i): str(i) for i in range(100)})
64-
md2: MultiDict[str] = MultiDict({str(i): str(i) for i in range(50, 150)})
64+
def test_keys_view_and(benchmark: BenchmarkFixture, any_multidict_class: Type[MultiDict[str]]) -> None:
65+
md1: MultiDict[str] = any_multidict_class({str(i): str(i) for i in range(100)})
66+
md2: MultiDict[str] = any_multidict_class({str(i): str(i) for i in range(50, 150)})
6567

6668
@benchmark
6769
def _run() -> None:
6870
assert len(md1.keys() & md2.keys()) == 50
6971

7072

71-
def test_keys_view_or(benchmark: BenchmarkFixture) -> None:
72-
md1: MultiDict[str] = MultiDict({str(i): str(i) for i in range(100)})
73-
md2: MultiDict[str] = MultiDict({str(i): str(i) for i in range(50, 150)})
73+
def test_keys_view_or(benchmark: BenchmarkFixture, any_multidict_class: Type[MultiDict[str]]) -> None:
74+
md1: MultiDict[str] = any_multidict_class({str(i): str(i) for i in range(100)})
75+
md2: MultiDict[str] = any_multidict_class({str(i): str(i) for i in range(50, 150)})
7476

7577
@benchmark
7678
def _run() -> None:
7779
assert len(md1.keys() | md2.keys()) == 150
7880

7981

80-
def test_keys_view_sub(benchmark: BenchmarkFixture) -> None:
81-
md1: MultiDict[str] = MultiDict({str(i): str(i) for i in range(100)})
82-
md2: MultiDict[str] = MultiDict({str(i): str(i) for i in range(50, 150)})
82+
def test_keys_view_sub(benchmark: BenchmarkFixture, any_multidict_class: Type[MultiDict[str]]) -> None:
83+
md1: MultiDict[str] = any_multidict_class({str(i): str(i) for i in range(100)})
84+
md2: MultiDict[str] = any_multidict_class({str(i): str(i) for i in range(50, 150)})
8385

8486
@benchmark
8587
def _run() -> None:
8688
assert len(md1.keys() - md2.keys()) == 50
8789

8890

89-
def test_keys_view_xor(benchmark: BenchmarkFixture) -> None:
90-
md1: MultiDict[str] = MultiDict({str(i): str(i) for i in range(100)})
91-
md2: MultiDict[str] = MultiDict({str(i): str(i) for i in range(50, 150)})
91+
def test_keys_view_xor(benchmark: BenchmarkFixture, any_multidict_class: Type[MultiDict[str]]) -> None:
92+
md1: MultiDict[str] = any_multidict_class({str(i): str(i) for i in range(100)})
93+
md2: MultiDict[str] = any_multidict_class({str(i): str(i) for i in range(50, 150)})
9294

9395
@benchmark
9496
def _run() -> None:
9597
assert len(md1.keys() ^ md2.keys()) == 100
9698

9799

98-
def test_keys_view_is_disjoint(benchmark: BenchmarkFixture) -> None:
99-
md1: MultiDict[str] = MultiDict({str(i): str(i) for i in range(100)})
100-
md2: MultiDict[str] = MultiDict({str(i): str(i) for i in range(100, 200)})
100+
def test_keys_view_is_disjoint(benchmark: BenchmarkFixture, any_multidict_class: Type[MultiDict[str]]) -> None:
101+
md1: MultiDict[str] = any_multidict_class({str(i): str(i) for i in range(100)})
102+
md2: MultiDict[str] = any_multidict_class({str(i): str(i) for i in range(100, 200)})
101103

102104
@benchmark
103105
def _run() -> None:
104106
assert md1.keys().isdisjoint(md2.keys())
105107

106108

107-
def test_keys_view_repr(benchmark: BenchmarkFixture) -> None:
108-
md: MultiDict[str] = MultiDict({str(i): str(i) for i in range(100)})
109+
def test_keys_view_repr(benchmark: BenchmarkFixture, any_multidict_class: Type[MultiDict[str]]) -> None:
110+
md: MultiDict[str] = any_multidict_class({str(i): str(i) for i in range(100)})
109111

110112
@benchmark
111113
def _run() -> None:
112114
repr(md.keys())
113115

114116

115-
def test_items_view_repr(benchmark: BenchmarkFixture) -> None:
116-
md: MultiDict[str] = MultiDict({str(i): str(i) for i in range(100)})
117+
def test_items_view_repr(benchmark: BenchmarkFixture, any_multidict_class: Type[MultiDict[str]]) -> None:
118+
md: MultiDict[str] = any_multidict_class({str(i): str(i) for i in range(100)})
117119

118120
@benchmark
119121
def _run() -> None:
120122
repr(md.items())
121123

122124

123-
def test_values_view_repr(benchmark: BenchmarkFixture) -> None:
124-
md: MultiDict[str] = MultiDict({str(i): str(i) for i in range(100)})
125+
def test_values_view_repr(benchmark: BenchmarkFixture, any_multidict_class: Type[MultiDict[str]]) -> None:
126+
md: MultiDict[str] = any_multidict_class({str(i): str(i) for i in range(100)})
125127

126128
@benchmark
127129
def _run() -> None:

0 commit comments

Comments
 (0)