Döngü koşulunda Fonksiyon kullanmak pahalı bir işlemdir

Standart

Bu yazımda döngü koşulunda gerek olmadığı sürece neden fonsiyon kullanmamalıyız konusundan bahsedeceğim. Örnekle açıklamadan önce böyle bir işlemin ne gibi bir zararı olur ondan bahsedeceğim. Kullandığımız fonksiyon içerisinde milyonlarca işlem yapıldığını düşünelim böyle bir fonksiyonu döngü koşulunda kullanırsak her döngü başında bu fonksiyonu işletmiş olacağız. Bu durumdan mümkün olduğunca kaçmalıyız.

Bir örnekle açıklamak gerekirse :

for ( int i = 0; i < strlen(strng); i++)
{
strng[i] = tolower( (unsigned char) strng[i] );
}

Kodunda her döngü başında str length fonksiyonu boşu boşuna çalışıyor. Oysaki sadece birkez çalışmasıda yeterli olacaktır sonuçta bu kod bloğunda her düngü sonunda dizi uzunluğunda bir değişiklik olmuyor. Bu durumdan kaçınmak için :

int len=strlen(strng);
for ( int i = 0; i < len; i++)
{
strng[i] = tolower( (unsigned char) strng[i] );
}

Döngü başlamadan önce uzunluğunu alarak bu kodu daha doğru bir şekilde yazabiliriz. Aşağıdaki şekilde de çözümleyebiliriz.

for ( int i = 0; strng[i] != '\0'; i++)
{
strng[i] = tolower( (unsigned char) strng[i] );
}

Yorum bırakın