stopwatch kullanımı öne çıkan

Uzun bir aradan sonra Stopwatch yapısı ile herkese merhaba arkadaşlar. Bu yazımda sizlere Stopwacth kullanımından bahsedeceğim ve küçük örnekler yapacağım.Gerek iş hayatı gerek özel hayatım sebebi ile uzun zamandır sayfama tek kelime yazı girişi yapamamıştım. Kendi içimde de bunun üzgünlüğünü yaşarken sık kullandığım bir yapıyı sizlere anlatmak istedim.

Stopwatch Nedir?

Türkçe’ye çevirmek istediğinzide izle durdur gibi bir anlam çıkıyor fakat bilinen adıyla kronometre diyebiliriz. Hocam bütün sırrı bozdun kronometre işin başlangıç ve bitişinde geçen zamanı bulmaya yarayan bir alet diyorsunuzdur. Aynen öyle. Peki biz yazılımcılar neyin kronometresini tutarız tabiki yazdığımız kodun başlangıcı ve bitişi arasında geçen zamanı.

Günümüzde her ne kadar bilgisayarlar çok güçlenmiş olsa da bazı durumlar da hala zamanı kontrol etmemiz gerekir. Aslında yazdığımız kodun Performans testi diyebiliriz.

Bazen iki farklı kütüphane aynı işlemi yapıyor olabilir bunlar arasından hangisini seçmek daha mantıklı sorusuna stopwatch ile karar verebiliriz. Ya da mevcutta çalışan bir algoritmanız var buna bazı eklemeler yapacaksınız bu sistemi ne kadar yorar bunların testlerini yine stopwatch ile yapabilirsiniz. Tabiki tüm sistemin performansı bir geçen süreye bakacak değil ya bazen kısa süren işlemlerde hata payları artabilir.

Stopwatch Tanımlama

Öncelikle projemize kütüphanemizi/sınıfımızı eklememiz gerekiyor. Bunun için:

//
using System.Diagnostics;

Bundan sonra ise sınıfımızdan bir nesne üretiyoruz.

//
Stopwatch sw = new Stopwatch();

Bu ürettiğimiz nesneyi Start() diyerek başlatıyor. Stop() diyerek bitiriyoruz. Aradan geçen zamanı ise Elapsed ile buluyoruz.

Genel yapısı aşağıdaki gibidir.

//
Stopwatch sw = new Stopwatch();
sw.Start();

// işlemler
// işlemler

sw.Stop();
string gecenZaman = sw.Elapsed;

Burada Elapsed dedikten sonra bir ‘.'(nokta) koyup; toplam geçen saniye(TotalSeconds), toplam geçen milisaniye(TotalMilliseconds) gibi çeşitli fonksiyonları da görebilirsiniz. Bu yapacağınız projeye göre değişecektir. Uzun bekleme sürelerine sahip bir proje ise toplam geçen gün sayısına bile bakabilir saniye ve milisaniye gibi küçük detayları görmezden gelebilirsiniz.

For Döngüsü – While Döngüsü Arasındaki Performans Testi

Şimdi 150 adımlı Fibonacci serisini for ve while döngüleri ile hesaplayalım. Bu iki döngü arasındaki performansı da stopwatch kullanarak karşılaştıralım.

Not = Fibonacci serisi kendinden önce gelen iki sayının toplamıyla oluşan dizidir. 1 1 2 3 5 8 13 …

Buna göre for ve while döngüleri ile hazırlamış olduğum kodum aşağıda yer almaktadır.

// Muhammed DİNÇER
using System;
using System.Diagnostics;

namespace FibonacciPerformans
{
    class Program
    {
        static void Main(string[] args)
        {
            long x = 0;
            long y = 1;
            long z = 0;
            int adımSayisi = 150;

            Stopwatch stopwatch = new Stopwatch();
            stopwatch.Start();
            for (int i = 0; i < adımSayisi - 2; i++)
            {
                z = x + y;
                //Console.WriteLine(z);
                x = y;
                y = z;

            }
            stopwatch.Stop();
            Console.WriteLine("For döngüsü ile Toplam Geçen Zaman: " + stopwatch.Elapsed);

            long a = 0;
            long b = 1;
            long c = 0;
            int j = 0;
            stopwatch.Start();
            while (j < adımSayisi - 2)
            {
                c = a + b;
                //Console.WriteLine(c);
                a = b;
                b = c;
                j++;
            }
            stopwatch.Stop();
            Console.WriteLine("While Döngüsü ile Toplam Geçen Zaman: " + stopwatch.Elapsed);
            Console.ReadLine();
}
}
}

Bu kodumuzun ekran görüntüsü de aşağıdaki gibi çıkacaktır. Döngüler arasında yarışı For döngüsü kazandı.

for ve while döngüleri arasında performans testi stopwatch

Umarım anlaşılır olmuştur. Okuduğunuz için teşekkür ederim.

Bunlara Göz Atmak İsteyebilirsiniz

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir