Merhabalar.
Kimi zaman uygulamalarımızda kullanıcıya yönelik bir takım bilgiler sunmak isteriz veya geliştirdiğimiz uygulamanın ne kadar hızlı ve iyi çalıştığını ekrana dökmek de istediğimiz olur.
Bu gibi durumlardan biride kullanıcıya istekte bulunduğu işlemin ne kadar zamanda tamamlandığını göstermek olabilir. Bu işlem için .NET ortamında bulunan hazır fonksiyonlardan TimeSpan zaman aralığı fonksiyonunu kullanabiliriz.
TimeSpan fonksiyonunu en basit haliyle kullanmamız gerekirse şöyle bir örnek verebiliriz.
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
1. Dim dt1 As DateTime = DateTime.Now
2. Dim dt2 As New DateTime(2006, 1, 10)
3. Dim ts As TimeSpan
4. ts = dt1.Subtract(dt2)
5. MsgBox(ts.TotalDays. ToString("0"))
End Class
Bu alt yordam, button1 kontrolüne tıkladığımızda bize dt1 ile dt2 arasında tarih farkını gün cinsinden ekrana mesaj olarak gösteriyor.
4. Satırdaki Subtract kodu tarih tipinden veri türüne aittir ve TimeSpan fonksiyonu ile çalışır. Eksiltmek anlamını taşır. Burdaki görevi de dt1 tarih değişkeninden dt2 tarihi değişkenini eksilmek ve farkını ts isimli TimeSpan fonksiyonuna atamaktır.
5. Satır ise 4. satırda TimeSpan fonksiyonuna atanan tarih farkını gün cinsinden ekrana getirir. Tostring(“0”) yazılmasının nedeni format olarak virgüllü hanelerin gelmesini önlemek içindir. ASP, VBScript veya Visual Basic ile uygulama geliştiren arkadaşlar bilecektir, formatnumber fonksiyonunda da 0 rakamı virgüllü hanelerin temizlenmesi işleminde kullanılıyordu. Burdaki durumda formatnumber fonksiyonundan farklı değil.
Şimdi yeni bir Visual Basic.NET 2.0 Projesi açıp, bir örnek yaparak TimeSpan fonksiyonunu açıklayalım.
Açtığımız projeye Bir buton kontrolü, birde label kontrolü eklememiz yeterli ama ben biraz daha açıklayıcı olup başlık ve işlem sonucu alt başlığı şeklinde iki tane daha label kontrolü ekledim.
Örneğimizin yapacağı iş olarak başla butonuna basıldığında 1 ila 10.000.000 arasında bir döngü oluşacak ve döngünün başlayıp ve bitişi zamanları araasında zaman farkını bulup Label2 kontrolüne yazarak kullanıcıya göstereceğiz.
Formumuza ilgili kontrolleri ekledikten sonra aşağıdaki kodu yazabiliriz.
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Call islem()
End Sub
Sub islem()
Dim baslangic As DateTime
Dim bitis As DateTime
Dim sure As System.TimeSpan
baslangic = DateTime.Now
Dim i As Integer
For i = 1 To 10000000
i = i + 1
Next
bitis = DateTime.Now
sure = bitis.Subtract(baslangic)
Label2.Text = "İşlem " & sure.TotalMilliseconds.ToString & " milisaniyede Gerçekleşti. "
End Sub
End Class
Evet gerekli kodlarıda ekledikten sonra programımızı çalıştırıp neler olacağını görelim.
Eğer herhangi bir sorunla karşılaşmadıysanız böyle bir ekran görüntüsü almanız gerek. İşlemin 15,586 milisaniyede gerçekleştiğini biliyoruz artık. Bu bilgi uygulamalarımız için birtakım fikirler verebilir.
Örneğin uygulamalarımızda performans tartışılmaz bir zorunluluk Bu nedenle çeşitli yöntemlerle birlikte TimeSpan() fonksiyonunu kullanarak işlem zamanının azalıp arttığını, buna bağlı olarak da performans artışının olup olmadığını anlayabiliriz.