Hızlı Kod mu, Küçük Kod mu Tercih Edilir?
Önceki XIX. Oylum - Matematik Sonraki
Hızlı Kod mu, Küçük Kod mu Tercih Edilir?
Eğer bir uygulama çok sayıda gerçek sayı işlevi kullanıyorsa işlev çağrılarının maliyetinin ihmal edilemediği duruma sık rastlanır. Günümüz işlemcileri çoğunlukla kendi işlemlerini çok hızlı yapar, fakat işlev çağrıları komut boruhattını ikiye ayırır.
Bu sebeple GNU C kütüphanesi sık kullanılan matematik işlevlerinin bir çoğu için eniyilemeler sağlar. GNU CC kullanıldığında ve kullanıcı eniyileyiciyi etkinleştirmişse, çeşitli yeni satıriçi işlevler ve makrolar tanımlanır. Bu yeni işlevler ve makrolar kütüphanedeki işlevlerle aynı isimdedirler ve dolayısıyla onların yerine kullanılırlar. Satıriçi işlevler durumunda onların kullanılmasının makul olup olmayacağına derleyici karar verir ve bu karar genellikle doğru olur.
Bu, kütüphane işlevlerinin çağrılmasının gerekli olmadığı ve üretilen kodun hızı belirgin biçimde arttrabileceği anlamına gelir. Sakıncası kod boyutunun artacak olmasıdır ve bu artış her zaman ihmal edilebilir olmayacaktır.
Satıriçi işlevlerin iki çeşidi vardır: kütüphane işlevleriyle aynı sonucu verenler ve errno değişkenine değer atamayabilen ve kütüphane işlevleri ile karşılaştırıldığında hassasiyeti ve/veya argüman aralığını azaltabilen diğerleri. İkinci çeşit satıriçi işlevler sadece GNU CC'ye -ffast-math seçeneği verilirse mümkündür.
Satıriçi işlevlerin ve makroların istenmediği durumlarda __NO_MATH_INLINES sembolü sistem başlık dosyaları yazılıma dahil edilmeden önce tanımlanmış olmalıdır. Bu sadece kütüphane işlevlerinin kullanılacağını garanti eder. Şüphesiz, bu seçeneğin tercih edilip edilmediği projedeki her dosya için belirlenebilir.
Tüm donanımlar IEEE 754 standardını gerçeklemediğinden ve gerçeklenmiş olsa bile onun özelliklerinden bazılarının kullanımı önemli bir başarım kaybına yol açabilir. Örneğin, sinyal eylemcilerinin kurulması bazı işlemcilerin kayan nokta birimini çifte hesaplama zamanından fazlasına sebep olan borulanmamış çalışmaya zorlar.
Önceki Üst Ana Başlık Sonraki
SVID Rasgele Sayı İşlevleri Başlangıç XX. Oylum - Aritmetik İşlevleri
Bir Linux Kitaplığı Sayfası