From a16d2b39f6cf3f6280d3ec7e93ac2c5606c3deaf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Elif=20Yalva=C3=A7?= <59252046+elifyalvac@users.noreply.github.com> Date: Tue, 17 Mar 2026 14:34:58 +0300 Subject: [PATCH 1/3] Implement performance decorator for functions Added a performance decorator to measure execution time and memory usage. --- Week04/decorators_elif_yalvac.py | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 Week04/decorators_elif_yalvac.py diff --git a/Week04/decorators_elif_yalvac.py b/Week04/decorators_elif_yalvac.py new file mode 100644 index 00000000..cafc7cea --- /dev/null +++ b/Week04/decorators_elif_yalvac.py @@ -0,0 +1,30 @@ +import time +import tracemalloc +from functools import wraps + +def performance(func): + @wraps(func) + def wrapper(*args, **kwargs): + # Sayaç artır + performance.counter += 1 + # Zaman ölçümü başlat + start_time = time.perf_counter() + # Bellek ölçümü başlat + tracemalloc.start() + # Fonksiyonu çalıştır + result = func(*args, **kwargs) + # Bellek ölçümü bitir + current, peak = tracemalloc.get_traced_memory() + tracemalloc.stop() + # Zaman ölçümü bitir + end_time = time.perf_counter() + # Toplam süreyi ekle + performance.total_time += (end_time - start_time) + # Toplam bellek (peak değer) + performance.total_mem += peak + return result + return wrapper + +performance.counter = 0 +performance.total_time = 0 +performance.total_mem = 0 From efd5bfe8771056e0a759d1fa99fa07e4fa203341 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Elif=20Yalva=C3=A7?= <59252046+elifyalvac@users.noreply.github.com> Date: Fri, 20 Mar 2026 21:44:06 +0300 Subject: [PATCH 2/3] Update decorators_elif_yalvac.py --- Week04/decorators_elif_yalvac.py | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/Week04/decorators_elif_yalvac.py b/Week04/decorators_elif_yalvac.py index cafc7cea..0ada4cc8 100644 --- a/Week04/decorators_elif_yalvac.py +++ b/Week04/decorators_elif_yalvac.py @@ -1,28 +1,27 @@ import time import tracemalloc -from functools import wraps def performance(func): - @wraps(func) def wrapper(*args, **kwargs): # Sayaç artır - performance.counter += 1 - # Zaman ölçümü başlat - start_time = time.perf_counter() + performance.counter += 1 # Bellek ölçümü başlat tracemalloc.start() + # Zaman ölçümü başlat + start_time = time.perf_counter() # Fonksiyonu çalıştır - result = func(*args, **kwargs) - # Bellek ölçümü bitir - current, peak = tracemalloc.get_traced_memory() - tracemalloc.stop() + result = func(*args, **kwargs) # Zaman ölçümü bitir end_time = time.perf_counter() - # Toplam süreyi ekle + # Bellek ölçümü bitir (peak ve current değerleri al) + current, peak = tracemalloc.get_traced_memory() + tracemalloc.stop() + # Toplam süreyi ve belleği ekle performance.total_time += (end_time - start_time) - # Toplam bellek (peak değer) performance.total_mem += peak return result + wrapper.__name__ = func.__name__ + wrapper.__doc__ = func.__doc__ return wrapper performance.counter = 0 From be07eba65eb544bc0c5c06357ddafb0cdf9d6723 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Elif=20Yalva=C3=A7?= <59252046+elifyalvac@users.noreply.github.com> Date: Mon, 23 Mar 2026 10:12:38 +0300 Subject: [PATCH 3/3] Refactor performance decorator to initialize counters --- Week04/decorators_elif_yalvac.py | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/Week04/decorators_elif_yalvac.py b/Week04/decorators_elif_yalvac.py index 0ada4cc8..9af6ee36 100644 --- a/Week04/decorators_elif_yalvac.py +++ b/Week04/decorators_elif_yalvac.py @@ -3,27 +3,27 @@ def performance(func): def wrapper(*args, **kwargs): + if not hasattr(performance, "counter"): + performance.counter = 0 + performance.total_time = 0 + performance.total_mem = 0 # Sayaç artır - performance.counter += 1 + performance.counter += 1 # Bellek ölçümü başlat tracemalloc.start() # Zaman ölçümü başlat - start_time = time.perf_counter() + start_time = time.perf_counter() # Fonksiyonu çalıştır - result = func(*args, **kwargs) + result = func(*args, **kwargs) # Zaman ölçümü bitir end_time = time.perf_counter() - # Bellek ölçümü bitir (peak ve current değerleri al) + # Bellek ölçümü al current, peak = tracemalloc.get_traced_memory() - tracemalloc.stop() - # Toplam süreyi ve belleği ekle + tracemalloc.stop() + # Toplamları güncelle 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