Skip to content

Commit a83c0a4

Browse files
committed
address review comments
1 parent c78237a commit a83c0a4

File tree

1 file changed

+41
-10
lines changed

1 file changed

+41
-10
lines changed

pyperformance/data-files/benchmarks/bm_deepcopy/run_benchmark.py

Lines changed: 41 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -10,30 +10,61 @@
1010
import pyperf
1111
from dataclasses import dataclass
1212

13+
1314
@dataclass
1415
class A:
15-
string : str
16-
lst : list
17-
boolean : bool
18-
16+
string: str
17+
lst: list
18+
boolean: bool
19+
20+
21+
def benchmark_reduce(n):
22+
class C(object):
23+
def __init__(self):
24+
self.a = 1
25+
self.b = 2
26+
27+
def __reduce__(self):
28+
return (C, (), self.__dict__)
29+
30+
def __setstate__(self, state):
31+
self.__dict__.update(state)
32+
c = C()
33+
34+
t0 = pyperf.perf_counter()
35+
for ii in range(n):
36+
_ = copy.deepcopy(c)
37+
dt = pyperf.perf_counter() - t0
38+
return dt
39+
1940

2041
def benchmark(n):
21-
a = {'list': [1,2,3,43], 't': (1,2,3), 'str': 'hello', 'subdict': {'a': True}}
22-
dc = A('hello', [1,2,3], True)
42+
a = {
43+
'list': [1, 2, 3, 43],
44+
't': (1 ,2, 3),
45+
'str': 'hello',
46+
'subdict': {'a': True}
47+
}
48+
dc = A('hello', [1, 2, 3], True)
49+
50+
t0 = pyperf.perf_counter()
2351
for ii in range(n):
24-
for jj in range(60):
52+
for jj in range(30):
2553
_ = copy.deepcopy(a)
2654
for s in ['red', 'blue', 'green']:
2755
dc.string = s
28-
for kk in range(10):
56+
for kk in range(5):
2957
dc.lst[0] = kk
3058
for b in [True, False]:
3159
dc.boolean = b
3260
_ = copy.deepcopy(dc)
33-
61+
dt = pyperf.perf_counter() - t0
62+
return dt
63+
3464

3565
if __name__ == "__main__":
3666
runner = pyperf.Runner()
3767
runner.metadata['description'] = "deepcopy benchmark"
3868

39-
runner.bench_func('deepcopy', benchmark, 200)
69+
runner.bench_time_func('deepcopy', benchmark)
70+
runner.bench_time_func('deepcopy_reduce', benchmark)

0 commit comments

Comments
 (0)