folder Tahribat.com Forumları
linefolder C - C++
linefolder C++ Inline Fonksiyon Ve "#Define"



C++ Inline Fonksiyon Ve "#Define"

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Fatih54
    Fatih54's avatar
    Kayıt Tarihi: 16/Ağustos/2012
    Erkek

    void test(int a)
    {
    return a * 5;
    }

    ile

    inline void test(int a)
    {
    return a * 5;
    }

    farkı nelerdir?

    Ve de Inline yerine #define kullansak hangisi daha hızlı çalışır? (Uygulama boyutu önemli değil)

  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    DeadSoul
    DeadSoul's avatar
    Kayıt Tarihi: 12/Mayıs/2012
    Erkek

    Herb Sutter - Sıra Dışı C++ : Cilt 2

    Inline ne yapar ?

    Bir fonksiyonu inline yapmak, derleyiciye kodun kullanıldığı her yere fonksiyonun bir kopyasını doğrudan yerleştirmeyi seçebileceğini bildirir. Derleyicinin bunu yaptığı durumlarda bir fonksiyon çağrısı üretilmesini önler.

    Kısaca şimdilik kullanma, ayrıntılı bir anlatımı var zamanım yok aktaramıcam belki akşam vakti.

     

     

  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Fatih54
    Fatih54's avatar
    Kayıt Tarihi: 16/Ağustos/2012
    Erkek
    DeadSoul bunu yazdı

    Herb Sutter - Sıra Dışı C++ : Cilt 2

    Inline ne yapar ?

    Bir fonksiyonu inline yapmak, derleyiciye kodun kullanıldığı her yere fonksiyonun bir kopyasını doğrudan yerleştirmeyi seçebileceğini bildirir. Derleyicinin bunu yaptığı durumlarda bir fonksiyon çağrısı üretilmesini önler.

    Kısaca şimdilik kullanma, ayrıntılı bir anlatımı var zamanım yok aktaramıcam belki akşam vakti.

     

     

    teşekkürler ancak fonksiyon çağırma ölçülebilecek bir şekilde zaman kaybettirir mi? (Milisaniye)

    Fatih54 tarafından 10/Mar/13 15:50 tarihinde düzenlenmiştir
  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    DeadSoul
    DeadSoul's avatar
    Kayıt Tarihi: 12/Mayıs/2012
    Erkek

    Pek çok programcı bir fonksiyonu yerelleştirmenin, çalıştırma zamanını geliştireceğini, çünkü fonksiyon çağrısı gecikmesini önlediğini ve fonksiyon çağrısının "örtüsü altından bakmanın" derleyicinin optimizer'ına daha fazla olanak sağladığını düşünür. Bu doğru olabilir ancak çoğunlukla yanlıştır.

    Fonksiyon aşırı sıklıkla çağırılmadıkça, programın genel çalıştırılma zamanında bir gelişme olmayacaktır. Aslında bunun tam tersi bile olabilir. Yerelleştirme, çağıran bir fonksiyonun büyüklüğünü arttırırsa, bu çağıran fonksiyonun referans yerelliğini azaltır. Bu, çağırıcının dahili döngüsü artık işlemci tamponuna sığmıyorsa, genel program hızının daha da kötüleşebileceğini anlamına gelir.

     

  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Fatih54
    Fatih54's avatar
    Kayıt Tarihi: 16/Ağustos/2012
    Erkek
    DeadSoul bunu yazdı

    Pek çok programcı bir fonksiyonu yerelleştirmenin, çalıştırma zamanını geliştireceğini, çünkü fonksiyon çağrısı gecikmesini önlediğini ve fonksiyon çağrısının "örtüsü altından bakmanın" derleyicinin optimizer'ına daha fazla olanak sağladığını düşünür. Bu doğru olabilir ancak çoğunlukla yanlıştır.

    Fonksiyon aşırı sıklıkla çağırılmadıkça, programın genel çalıştırılma zamanında bir gelişme olmayacaktır. Aslında bunun tam tersi bile olabilir. Yerelleştirme, çağıran bir fonksiyonun büyüklüğünü arttırırsa, bu çağıran fonksiyonun referans yerelliğini azaltır. Bu, çağırıcının dahili döngüsü artık işlemci tamponuna sığmıyorsa, genel program hızının daha da kötüleşebileceğini anlamına gelir.

     

    Teşekkürler.

     

    Şunu da cevaplarsan iyi olur:

    Inline yerine #define kullansak hangisi daha hızlı çalışır? (Uygulama boyutu önemli değil)

    Burada #define direk preprocessor için bu yüzden daha mı hızlı çalıştırır?

    Fatih54 tarafından 10/Mar/13 16:06 tarihinde düzenlenmiştir
Toplam Hit: 1087 Toplam Mesaj: 5