Genellikle olarak bilinen likelyve unlikelymakrolar derleyiciye ifgenellikle bir girilip atlanmayacağını belirler. Bunu kullanmak bazı (oldukça küçük) performans iyileştirmeleriyle sonuçlanır.
Onları son zamanlarda kullanmaya başladım ve bu tür ipuçlarının ne sıklıkta kullanılması gerektiğinden emin değilim. Şu anda ifgenellikle olarak işaretlenmiş hata denetimi s ile kullanıyorum unlikely. Örneğin:
mem = malloc(size);
if (unlikely(mem == NULL))
goto exit_no_mem;
Tamam görünüyor, ancak hata kontrolü ifoldukça sık ve sonuçta adı geçen makroların kullanımı.
Benim sorum şu, her hata kontrolünde çok fazla likelyve unlikelymakro var ifmı?
Biz oradayken, başka hangi yerlerde sıkça kullanılıyorlar?
Şu anki kullanımımda, gerçek zamanlı alt sistemden soyutlama yapan bir kütüphanede bulunuyor, bu nedenle programlar RTAI, QNX ve diğerleri arasında taşınabilir hale gelecekti. Bununla birlikte, işlevlerin çoğu oldukça küçüktür ve doğrudan bir veya iki başka işlevi çağırır. Birçoğu bile static inlineişlevlerdir.
Yani, her şeyden önce, profil oluşturabileceğim bir uygulama değil. Bağımsız bir uygulama değil, bir kütüphane olduğu için "şişe boyunlarını tanımlamak" mantıklı değildir.
İkincisi, sanki "Bunun pek olası olmadığını biliyorum, derleyiciye de söyleyebilirim" gibi. Aktif olarak optimize etmeye çalışmıyorum if.
likelyve unlikelyvar olur ve ne yaparlar. Onları ne zaman ve nerede kullanmanın en iyisi olduğunu önerecek hiçbir şey bulamadım.