C++ Inline Fonksiyon Ve "#Define"
-
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)
-
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.
-
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 -
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.
-
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
