Skip to content

Commit

Permalink
address review comments
Browse files Browse the repository at this point in the history
  • Loading branch information
eendebakpt committed May 24, 2022
1 parent c78237a commit a83c0a4
Showing 1 changed file with 41 additions and 10 deletions.
51 changes: 41 additions & 10 deletions pyperformance/data-files/benchmarks/bm_deepcopy/run_benchmark.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,30 +10,61 @@
import pyperf
from dataclasses import dataclass


@dataclass
class A:
string : str
lst : list
boolean : bool

string: str
lst: list
boolean: bool


def benchmark_reduce(n):
class C(object):
def __init__(self):
self.a = 1
self.b = 2

def __reduce__(self):
return (C, (), self.__dict__)

def __setstate__(self, state):
self.__dict__.update(state)
c = C()

t0 = pyperf.perf_counter()
for ii in range(n):
_ = copy.deepcopy(c)
dt = pyperf.perf_counter() - t0
return dt


def benchmark(n):
a = {'list': [1,2,3,43], 't': (1,2,3), 'str': 'hello', 'subdict': {'a': True}}
dc = A('hello', [1,2,3], True)
a = {
'list': [1, 2, 3, 43],
't': (1 ,2, 3),
'str': 'hello',
'subdict': {'a': True}
}
dc = A('hello', [1, 2, 3], True)

t0 = pyperf.perf_counter()
for ii in range(n):
for jj in range(60):
for jj in range(30):
_ = copy.deepcopy(a)
for s in ['red', 'blue', 'green']:
dc.string = s
for kk in range(10):
for kk in range(5):
dc.lst[0] = kk
for b in [True, False]:
dc.boolean = b
_ = copy.deepcopy(dc)

dt = pyperf.perf_counter() - t0
return dt


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

runner.bench_func('deepcopy', benchmark, 200)
runner.bench_time_func('deepcopy', benchmark)
runner.bench_time_func('deepcopy_reduce', benchmark)

0 comments on commit a83c0a4

Please sign in to comment.