From 6892cc6ce2b2f11435a77a2e719218a741a7513e Mon Sep 17 00:00:00 2001 From: Ebrukoksal <114864294+Ebrukoksal@users.noreply.github.com> Date: Tue, 24 Mar 2026 21:33:51 +0300 Subject: [PATCH 1/3] Add performance decorator with memory and time tracking Implement a performance decorator to measure execution time and memory usage. --- Week04/decorators_ebru_koksal.py | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 Week04/decorators_ebru_koksal.py diff --git a/Week04/decorators_ebru_koksal.py b/Week04/decorators_ebru_koksal.py new file mode 100644 index 00000000..3c2815e8 --- /dev/null +++ b/Week04/decorators_ebru_koksal.py @@ -0,0 +1,24 @@ +import time +import tracemalloc + +def performance(func): + def wrapper(*args, **kwargs): + tracemalloc.start() + t1 = time.perf_counter() + + result = func(*args, **kwargs) + + t2 = time.perf_counter() + _, peak = tracemalloc.get_traced_memory() + tracemalloc.stop() + + performance.counter += 1 + performance.total_time += (t2 - t1) + performance.total_mem += peak + + return result + return wrapper + +performance.counter = 0 +performance.total_time = 0 +performance.total_mem = 0 From 66519a0c508caa04e754c954aa92c1aee9cd169b Mon Sep 17 00:00:00 2001 From: Ebrukoksal <114864294+Ebrukoksal@users.noreply.github.com> Date: Mon, 30 Mar 2026 20:46:30 +0300 Subject: [PATCH 2/3] Refactor performance tracking in decorator --- Week04/decorators_ebru_koksal.py | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/Week04/decorators_ebru_koksal.py b/Week04/decorators_ebru_koksal.py index 3c2815e8..a89d4d0b 100644 --- a/Week04/decorators_ebru_koksal.py +++ b/Week04/decorators_ebru_koksal.py @@ -12,13 +12,14 @@ def wrapper(*args, **kwargs): _, peak = tracemalloc.get_traced_memory() tracemalloc.stop() - performance.counter += 1 - performance.total_time += (t2 - t1) - performance.total_mem += peak + wrapper.counter += 1 + wrapper.total_time += (t2 - t1) + wrapper.total_mem += peak return result + + wrapper.counter = 0 + wrapper.total_time = 0 + wrapper.total_mem = 0 + return wrapper - -performance.counter = 0 -performance.total_time = 0 -performance.total_mem = 0 From f0f44fae1f6aafc1049954c13ea9c059cd4e3fc6 Mon Sep 17 00:00:00 2001 From: Ebrukoksal <114864294+Ebrukoksal@users.noreply.github.com> Date: Mon, 30 Mar 2026 20:51:44 +0300 Subject: [PATCH 3/3] Improve performance decorator implementation Refactor performance decorator to track execution time and memory usage more efficiently. --- Week04/decorators_ebru_koksal.py | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/Week04/decorators_ebru_koksal.py b/Week04/decorators_ebru_koksal.py index a89d4d0b..72c94441 100644 --- a/Week04/decorators_ebru_koksal.py +++ b/Week04/decorators_ebru_koksal.py @@ -3,23 +3,25 @@ def performance(func): def wrapper(*args, **kwargs): + if not hasattr(performance, "counter"): + performance.counter = 0 + performance.total_time = 0 + performance.total_mem = 0 + + performance.counter += 1 tracemalloc.start() - t1 = time.perf_counter() - + start_time = time.perf_counter() result = func(*args, **kwargs) - - t2 = time.perf_counter() - _, peak = tracemalloc.get_traced_memory() + end_time = time.perf_counter() + current, peak = tracemalloc.get_traced_memory() tracemalloc.stop() - - wrapper.counter += 1 - wrapper.total_time += (t2 - t1) - wrapper.total_mem += peak + + performance.total_time += (end_time - start_time) + performance.total_mem += peak return result - - wrapper.counter = 0 - wrapper.total_time = 0 - wrapper.total_mem = 0 + + wrapper.__name__ = func.__name__ + wrapper.__doc__ = func.__doc__ return wrapper