Gereksiz IF & ELSE Kullanımı

Share Button

Merhaba,

Bu yazıda basit ama bir o kadar da önemli ancak gözden kaçabilecek bir detaydan bahsetmek istiyorum. Neredeyse bütün programlama dillerinin temel taşı olan IF mekanizmasını, özellikle döngüler içinde fazladan gereksiz yere kullanmanın, performansı olumsuz yönde etkilediğini göstermek istiyorum.

İki adet binary search yapan fonksiyon yazacağız. Versyonlar arasında oluşan zaman farkı çok büyük olmayan veri setinde bile kayda değer performans kaybı doğurabiliyor.
İnternette binary search alogritmasına dair çeşitli kaynaklar bulabilirsiniz.

Aşağıdaki videoda güzel bir anlatım mevcut. Dikkat edilmesi gereken en önemli nokta arama yapılacak listenin sıralı bir liste olması gerekliliğidir.

 

Versyon1:

Versyon2 (Versyon1 den farklı olarak döngü içerisindeki bir adet koşul çıkarılmıştır ve while kontrolüne eklenmiştir. Listeyi yarıya indirmek için yapılan bölme işlemi while öncesinde ve while içinde en son işlem olarak iki defa yapılmıştır.)

main.c (0..2000000 sayıları arasında 768463 sayısını binary search arama)

 

GCC ile derlemek için:

Kaynak:

Second Edition The C Programming Language (ANSI C version) by Brian W. Kernighan, Dennis M. Ritchie (Ex: Cp 3: P:1)