|
1 | | -from time import time |
2 | | -from sys import getsizeof |
| 1 | +from time import time |
| 2 | +import tracemalloc |
| 3 | + |
3 | 4 |
|
4 | 5 | def performance(fn): |
| 6 | + if not hasattr(performance, "counter"): |
| 7 | + setattr(performance, "counter", 0) |
5 | 8 |
|
6 | | - if not hasattr(performance,"counter"): |
7 | | - setattr(performance,"counter",0) |
8 | | - |
9 | | - if not hasattr(performance,"total_time"): |
10 | | - setattr(performance,"total_time",0.0) |
| 9 | + if not hasattr(performance, "total_time"): |
| 10 | + setattr(performance, "total_time", 0.0) |
11 | 11 |
|
12 | | - if not hasattr(performance,"total_mem"): |
13 | | - setattr(performance,"total_mem",0) |
| 12 | + if not hasattr(performance, "total_mem"): |
| 13 | + setattr(performance, "total_mem", 0) |
14 | 14 |
|
15 | | - |
16 | 15 | def calculate_perf(*args, **kwargs): |
| 16 | + |
| 17 | + tracemalloc.start() |
17 | 18 | begin_time = time() |
18 | | - result = fn(*args,**kwargs) |
19 | | - memory_usage = getsizeof(result) |
| 19 | + result = fn(*args, **kwargs) |
20 | 20 | end_time = time() |
| 21 | + current, peak = tracemalloc.get_traced_memory() |
21 | 22 |
|
22 | | - setattr(performance,"counter",getattr(performance,"counter") + 1) |
23 | | - setattr(performance,"total_time",getattr(performance,"total_time") + (end_time - begin_time)) |
24 | | - setattr(performance,"total_mem",getattr(performance,"total_mem") + memory_usage) |
| 23 | + setattr(performance, "counter", getattr(performance, "counter") + 1) |
| 24 | + setattr(performance, "total_time", getattr(performance, "total_time") + (end_time - begin_time)) |
| 25 | + setattr(performance, "total_mem", getattr(performance, "total_mem") + peak) |
25 | 26 |
|
26 | 27 | return result |
| 28 | + |
27 | 29 | return calculate_perf |
0 commit comments