From cf816438e29c280e1c2e69c89b328498f07508f1 Mon Sep 17 00:00:00 2001 From: aysegulyildizz <139223718+aysegulyildizz@users.noreply.github.com> Date: Tue, 23 Dec 2025 11:55:25 +0300 Subject: [PATCH] Add performance measuring decorator This decorator measures the execution time and memory usage of a function, providing performance statistics after execution. --- Week04/decorator_aysegul_yildiz.py | 40 ++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 Week04/decorator_aysegul_yildiz.py diff --git a/Week04/decorator_aysegul_yildiz.py b/Week04/decorator_aysegul_yildiz.py new file mode 100644 index 00000000..f23fae95 --- /dev/null +++ b/Week04/decorator_aysegul_yildiz.py @@ -0,0 +1,40 @@ +import time +import tracemalloc + +def performans(func): + """Bir fonksiyonun zaman ve bellek tüketimini ölçen dekoratör.""" + + def sarmalayıcı(*args, **kwargs): + # --- ÖNCE --- + tracemalloc.start() + baslangic = time.perf_counter() + + # Fonksiyonun gerçek çalışması + sonuc = func(*args, **kwargs) + + # --- SONRA --- + bitis = time.perf_counter() + mevcut_bellek, maksimum_bellek = tracemalloc.get_traced_memory() + tracemalloc.stop() + + gecen_sure = bitis - baslangic + + # Performans istatistiklerini güncelle + performans.sayac += 1 + performans.toplam_sure += gecen_sure + performans.toplam_bellek += maksimum_bellek + + # Ölçüm sonuçlarını kullanıcıya göster + print(f"Fonksiyon adı: {func.__name__}") + print(f"Geçen süre: {gecen_sure:.10f} saniye") + print(f"Bellek kullanımı: {maksimum_bellek} bayt") + print(f"Toplam çağrı sayısı: {performans.sayac}\n") + + return sonuc + + return sarmalayıcı + +# Dekoratörün durum değişkenlerini başlat +performans.sayac = 0 +performans.toplam_sure = 0.0 +performans.toplam_bellek = 0