Sık sık genellikle arayüz dosyaları ve uygulama dosyalarını ama ayırmak isterLink time optimizasyonu gcc 5.1 'de basit fonksiyonlardan vazgeçmek için yeterince iyi mi? aliskanliklarindan
class PositiveInteger
{
private:
long long unsigned m_i;
public:
PositiveInteger (int i);
};
inline PositiveInteger :: PositiveInteger (int i)
: m_i (i)
{
if (i < 0)
throw "oops";
}
böyle bu (yapmacık örnek) gibi basit işlevleri için satır içi işlev tanımları yazma, yine de, bu işlevler için benim alışkanlık olduğu Kafamdaki ses bana muhtemelen sıcak noktalarda çok fazla vurulacağını söylüyor.
ben tavsiye "İlk profil" ve kabul ama ben derleyici böyle fonksiyonlar derleme de inlined edilip aynı nihai nesne kodu üretmek olacağını önsel bilse çaba profilleme bir bütün yükü önlemek olabilir biliyorum veya bağlantı zamanı. (Ayrıca, enjekte edilen profil kodunun kendisinin yukarıdaki gibi çok basit işlevlerin etkisini azaltan zamanlamada bir değişikliğe neden olabileceğine inanıyorum.)
GCC 5.1, yeni LTO (bağlantı süresi optimizasyonu) iyileştirmeleri yayınlandı. Gerçekten ne kadar iyi? Nihai yürütülebilir dosyayı bilerek hangi tür işlevleri güvenli bir şekilde etkileyemeyeceğim?
Bu kod biçimlendirmesi ... ... gözleri acıtıyor. PositiveInteger :: PositiveInteger' bir şeyin adıdır. Nitelikli, ama yine de sadece bir isim. Neden buna boşluk koyarsın? –
Yazdığın yolu buldum acıyor * gözlerim, her ne kadar uzaklarda daha yaygın olduğunu fark etsem de. Başka herhangi bir yerde beyaz boşluk koymak için aynı argüman. – spraff