From 44689638d16304d20265ffdfc8f14d5f3dc3fa16 Mon Sep 17 00:00:00 2001 From: zeynep nur erten Date: Sat, 28 Mar 2026 10:27:42 +0300 Subject: [PATCH 1/6] Add performance measurement decorator --- Week04/decorators_zeynepnur_erten | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 Week04/decorators_zeynepnur_erten diff --git a/Week04/decorators_zeynepnur_erten b/Week04/decorators_zeynepnur_erten new file mode 100644 index 00000000..ca1d5cfd --- /dev/null +++ b/Week04/decorators_zeynepnur_erten @@ -0,0 +1,19 @@ +import time +import sys + +def performance_measurer(func): + func.counter = 0 + func.total_time = 0 + func.total_mem = 0 + + def wrapper(*args, **kwargs): + func.counter += 1 + start_time = time.perf_counter() + result = func(*args, **kwargs) + end_time = time.perf_counter() + func.total_time += (end_time - start_time) + func.total_mem += sys.getsizeof(result) + + return result + + return wrapper From 253e3c127220bba1ee9e6098b343dc79ea9c95c5 Mon Sep 17 00:00:00 2001 From: zeynep nur erten Date: Sat, 28 Mar 2026 18:18:10 +0300 Subject: [PATCH 2/6] Update decorators_zeynepnur_erten --- Week04/decorators_zeynepnur_erten | 30 ++++++++++++++++++------------ 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/Week04/decorators_zeynepnur_erten b/Week04/decorators_zeynepnur_erten index ca1d5cfd..347ecc19 100644 --- a/Week04/decorators_zeynepnur_erten +++ b/Week04/decorators_zeynepnur_erten @@ -1,19 +1,25 @@ -import time -import sys -def performance_measurer(func): - func.counter = 0 - func.total_time = 0 - func.total_mem = 0 +import time +import tracemalloc +def performance(func): def wrapper(*args, **kwargs): - func.counter += 1 - start_time = time.perf_counter() + tracemalloc.start() + t1 = time.perf_counter() + result = func(*args, **kwargs) - end_time = time.perf_counter() - func.total_time += (end_time - start_time) - func.total_mem += sys.getsizeof(result) + + 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 96c5145310d46a2f06707ad883104795130ef0a9 Mon Sep 17 00:00:00 2001 From: zeynep nur erten Date: Sat, 28 Mar 2026 18:20:59 +0300 Subject: [PATCH 3/6] Enhance performance decorator with memory tracking --- Week04/decorators_zeynepnur_erten | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Week04/decorators_zeynepnur_erten b/Week04/decorators_zeynepnur_erten index 347ecc19..463b9535 100644 --- a/Week04/decorators_zeynepnur_erten +++ b/Week04/decorators_zeynepnur_erten @@ -1,8 +1,12 @@ - import time import tracemalloc def performance(func): + if not hasattr(performance, "counter"): + performance.counter = 0 + performance.total_time = 0 + performance.total_mem = 0 + def wrapper(*args, **kwargs): tracemalloc.start() t1 = time.perf_counter() @@ -19,7 +23,3 @@ def performance(func): return result return wrapper - -performance.counter = 0 -performance.total_time = 0 -performance.total_mem = 0 From 15e2dcf3b7adec428035dfa06bbcd60e70f6d7ce Mon Sep 17 00:00:00 2001 From: zeynep nur erten Date: Sat, 28 Mar 2026 18:22:55 +0300 Subject: [PATCH 4/6] Rename decorators_zeynepnur_erten to decorators_zeynepnur_erten.py --- .../{decorators_zeynepnur_erten => decorators_zeynepnur_erten.py} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename Week04/{decorators_zeynepnur_erten => decorators_zeynepnur_erten.py} (100%) diff --git a/Week04/decorators_zeynepnur_erten b/Week04/decorators_zeynepnur_erten.py similarity index 100% rename from Week04/decorators_zeynepnur_erten rename to Week04/decorators_zeynepnur_erten.py From eba3b72723e2d1c2866b1576dfa79973a8292f48 Mon Sep 17 00:00:00 2001 From: zeynep nur erten Date: Sat, 28 Mar 2026 18:23:30 +0300 Subject: [PATCH 5/6] Update decorators_zeynepnur_erten.py --- Week04/decorators_zeynepnur_erten.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Week04/decorators_zeynepnur_erten.py b/Week04/decorators_zeynepnur_erten.py index 463b9535..347ecc19 100644 --- a/Week04/decorators_zeynepnur_erten.py +++ b/Week04/decorators_zeynepnur_erten.py @@ -1,12 +1,8 @@ + import time import tracemalloc def performance(func): - if not hasattr(performance, "counter"): - performance.counter = 0 - performance.total_time = 0 - performance.total_mem = 0 - def wrapper(*args, **kwargs): tracemalloc.start() t1 = time.perf_counter() @@ -23,3 +19,7 @@ def wrapper(*args, **kwargs): return result return wrapper + +performance.counter = 0 +performance.total_time = 0 +performance.total_mem = 0 From cca5755622bc2064f533f7f1cd0ef9627e14d86a Mon Sep 17 00:00:00 2001 From: zeynep nur erten Date: Fri, 3 Apr 2026 09:48:04 +0300 Subject: [PATCH 6/6] Enhance performance decorator with memory tracking Refactor performance decorator to track execution time and memory usage more efficiently. --- Week04/decorators_zeynepnur_erten.py | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/Week04/decorators_zeynepnur_erten.py b/Week04/decorators_zeynepnur_erten.py index 347ecc19..72c94441 100644 --- a/Week04/decorators_zeynepnur_erten.py +++ b/Week04/decorators_zeynepnur_erten.py @@ -1,25 +1,27 @@ - import time import tracemalloc 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() - - performance.counter += 1 - performance.total_time += (t2 - t1) + + performance.total_time += (end_time - start_time) performance.total_mem += peak return result + + wrapper.__name__ = func.__name__ + wrapper.__doc__ = func.__doc__ + return wrapper - -performance.counter = 0 -performance.total_time = 0 -performance.total_mem = 0