SORU
28 EYLÜL 2008, Pazar


C satır içi işlevleri faydaları ?

Avantajları C satır içi işlevleri kullanmanın dezavantajları nedir ? Sadece bugün kullanılan hızlı İşlemci, büyük bellek vb optimize edilmiş derleyici çıktıları kod için, ama performans artışı görüyorum. onlar gerçekten bugün avantajları ne hafıza kıt olduğu ve her şeyin belleğin 100 kb'den daha uygun olduğu 1980< gibi değil; ()?

CEVAP
28 EYLÜL 2008, Pazar


Avantajları

  • Gerekli kod satır içi uygulaması ile, programın işlevi çağrısı daha az zaman harcamak ve parçaları dönecektir. Büyük gider bile kodunuzu daha hızlı gitmesi gerekiyordu, (aşağıya bakınız). Önemsiz erişenleri satır içi uygulaması etkin satır içi uygulaması örneği olabilir.
  • Satır içi olarak işaretleyerek, bir başlık dosyası içinde bir işlev tanımı (yani linker şikayet etmeden birden çok derleme birimi dahil olabilir) koyabilirsiniz

Dezavantajları

  • Kodunuzu daha büyük (eğer kullanıyorsanız yani önemsiz olmayan fonksiyonları için satıriçi) yapabilirsiniz. Gibi, çağrı kışkırtmak ve derleyici en iyi duruma getirmeleri yenilgi olabilir.
  • Bu nesne işleme iç (ama sonra, "" üye olur, çok özel. her ortaya koyar, çünkü biraz sarma sonları Bu Pİmpl desen satır içi uygulaması kullanmanız gerekir anlamına gelir.
  • Bu biraz sarma 2 tatili: C satır içi uygulaması derleme zamanında çözümlenir. Bu da demektir ki gerektiği değiştirme kodu inlined işlev için ne yapmalıyım? yeniden tüm kod kullanarak emin olmak için olacak güncelleme (aynı sebepten dolayı, ben önlemek için varsayılan değer fonksiyon parametreleri)
  • Ne zaman kullanılan bir başlık, başlık, dosya daha büyük, ve böylece, sulandırmak ilginç bilgiler (listenin bir sınıf yöntemleri) ile kullanıcı kodu umrunda değil (bu nedenle bir kez daha tekrar ediyorum inlined işlevleri içinde bir sınıf, ama define bir başlık sonra sınıf beden ve asla içinde sınıf beden).

Satır İçi Uygulaması Magic

  • Derleyici olabilir veya satır içi olarak işaretlenmiş işlevleri satıriçi değil, aynı zamanda işlevleri derleme ya da bağlama anda satır içi olarak işaretlenmiş içi için karar verebilir.
  • Satır içi çalışır gibi bir kopyala/yapıştır ile kontrol derleyici, hangi oldukça farklı bir ön-işlemci Makro: Makro olacak zorla inlined, kirleten tüm ad ve kodu, olmayacak kolayca debuggable ve yapılacak olsa bile, derleyici olurdu karar olarak verimsiz.
  • Kabul kendisi bir sınıf sınıf gövdesi içinde tanımlanan her yöntemi "" eğer derleyici hala değil içi karar verebilir. (hatta inlined olarak
  • Sanal yöntemleri inlinable olması gerekiyordu değildir. Yine de, bazen, ne zaman derleyici olabilir emin türünün nesne (yani nesneyi ilan edildi ve inşa içinde aynı işlevi vücut), hatta bir sanal işlevi olacak inlined çünkü derleyici bilir öyle bir tip nesne.
  • Şablon yöntemleri/fonksiyonları her zaman inlined değil (bir başlık kendi varlığını otomatik olarak satır içi yapmaz).
  • Bir sonraki adım sonra "satır içi" şablon metaprograming . I. e. ""Derleme zaman, bazen, derleyici bir fonksiyonun nihai sonucu anlamak... karmaşık bir algoritma bazen return 42 ; deyim, bir nevi azaltılabilir. kodunuzu satır içi uygulaması tarafından Bu da benim için . ben^>aşırı satır içi uygulaması. Nadiren gerçek hayatta olur, derleme kez daha yapar, kodunuzu şişirir ve kodunuzu daha hızlı yapacak. Ama kase gibi, her yerde en işlem bu şekilde çözülmesi çünkü uygulamak için çalışmayın... Hala, bu serin zaten
    :-p

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • cekehechu

    cekehechu

    20 HAZİRAN 2006
  • FullMag

    FullMag

    15 ŞUBAT 2007
  • Mark Hyder

    Mark Hyder

    6 EKİM 2011