|
1 | 1 | import time |
2 | 2 |
|
3 | | -# class time_execution: |
| 3 | +# class ExecutionTimer: |
4 | 4 | # def __init__(self, func): |
5 | 5 | # self.func = func |
6 | 6 |
|
7 | 7 | # def __call__(self, *args, **kwargs): |
8 | | -# start = time.time() |
| 8 | +# start = time.perf_counter() |
9 | 9 | # result = self.func(*args, **kwargs) |
10 | | -# end = time.time() |
11 | | -# print(f"{self.func.__name__}() takes {(end - start) * 1000:.4f} ms") |
| 10 | +# end = time.perf_counter() |
| 11 | +# print(f"{self.func.__name__}() took {(end - start) * 1000:.4f} ms") |
12 | 12 | # return result |
13 | 13 |
|
14 | 14 |
|
15 | | -class time_execution: |
| 15 | +class ExecutionTimer: |
16 | 16 | def __init__(self, repetitions=1): |
17 | 17 | self.repetitions = repetitions |
18 | 18 |
|
19 | | - def __call__(self, func): |
20 | | - def _timer(*args, **kwargs): |
| 19 | + |
| 20 | +def __call__(self, func): |
| 21 | + def _timer(*args, **kwargs): |
| 22 | + result = None |
| 23 | + total_time = 0 |
| 24 | + print(f"Running {func.__name__}() {self.repetitions} times") |
| 25 | + for _ in range(self.repetitions): |
| 26 | + start = time.time() |
21 | 27 | result = func(*args, **kwargs) |
22 | | - total_time = 0 |
23 | | - print(f"Running {func.__name__}() {self.repetitions} times") |
24 | | - for _ in range(self.repetitions): |
25 | | - start = time.time() |
26 | | - func(*args, **kwargs) |
27 | | - end = time.time() |
28 | | - total_time += end - start |
29 | | - average_time = total_time / self.repetitions |
30 | | - print( |
31 | | - f"{func.__name__}() takes " |
32 | | - f"{average_time * 1000:.4f} ms on average" |
33 | | - ) |
34 | | - return result |
| 28 | + end = time.time() |
| 29 | + total_time += end - start |
| 30 | + average_time = total_time / self.repetitions |
| 31 | + print( |
| 32 | + f"{func.__name__}() takes " |
| 33 | + f"{average_time * 1000:.4f} ms on average" |
| 34 | + ) |
| 35 | + return result |
35 | 36 |
|
36 | | - return _timer |
| 37 | + return _timer |
0 commit comments