SORU
3 Ocak 2010, Pazar


Bağlama vs dinamik statik bağlama

Herhangi bir performans zorlayıcı sebep statik belirli durumlarda dinamik bağlama ya da tam tersi bağlama üzerinde seçmek için vardır? Duymuş ya da aşağıdaki okudum, ama onların doğruluğuna kefil bu konu hakkında yeterince bilgim yok.

1) bağlama ve dinamik statik bağlama arasında performans farkı genellikle göz ardı edilebilir.

2) (1) Profil bilgileri programı hotpaths optimize etmek için kullanan bir profil oluşturma derleyici kullanarak çünkü statik bağlama eğer doğru değil, derleyici kodunuzu ve kütüphane kodunu hem optimize edebilirsiniz. Dinamik sadece bağlama ile kodunuzu optimize edilebilir. Eğer çoğu zaman kütüphane kodu için harcanan ise, bu büyük bir fark yaratabilir. Aksi takdirde, (1) hala geçerlidir.

CEVAP
3 Ocak 2010, Pazar


  • Dinamikbağlamatoplam kaynak tüketimini azaltmak(birden fazla işlem hisse aynı kütüphane (sürüm de dahil olmak üzere "aynı" dersin)). Bu ortamlardan varlığını harekete geçiren değişken olduğuna inanıyorum. "Kaynaklar" disk alanı, RAM ve önbellek alanı içerir. burada Eğer dinamik linker yeterince esnek ise, tabii ki, DLL hell riski vardır.
  • Dinamikbağlama kütüphaneleri için hata düzeltmeleri ve yükseltmeleri anlamına geliryaygeliştirmek içinseninsana bir şey gemiye gerek kalmadan ürün.
  • Eklentileriher zaman için arayındinamikbağlama.
  • Statikbağlama, kod, çok çalışacak bilmeniz anlamına gelirsınırlı ortamlar(Kurtarma modunda önyükleme işleminin başında ya).
  • Statikbağlama ikililer yapabilirsinizkolay dağıtmak içinfarklı kullanıcı ortamları (büyük ve daha fazla kaynak kullanan bir program göndermek pahasına).
  • Statikbağlama biraz izin verebilirdaha hızlı başlangıçtimes, ama bu boyut ve karmaşıklık programınızı her ikisi de bir dereceye kadar bağlıdırveOSs yükleme stratejisinin detayları.

Diğer bazı cevaplar açıklamalarda bulunan ve çok ilgili öneriler içerecek şekilde düzenler. Bu kır şekilde çalıştırmak için planı ne çok bağlı olduğunu not etmek isterim. Minimal gömülü sistemler dinamik bağlama desteklemek için yeterli kaynaklara sahip olmayabilir. Biraz daha küçük sistemler dinamik hafıza, RAM tasarrufu çok cazip bağlama yapmak için yeterince küçük olduğundan iyi bağlama desteği olabilir. Tam gaz tüketici PC Mark da belirttiği gibi, büyük kaynaklara sahip, ve muhtemelen kolaylık sorunlar düşünüyorsun bu konuda izin verebilirsiniz.


Performansı adres ve sorunlar verimliliği:duruma göre değişir.

Klasik, dinamik kütüphane gerektiren bir çeşit tutkal tabakası hangi sıklıkta anlamına gelir çift gönderme veya ekstra katman yönlendirme işlevi adresleme ve maliyeti biraz daha hızlı (ama işlevi arama süresi aslında büyük bir kısmı sizin süre???).

Ancak, eğer çalışan birden çok işlem olan tüm çağrı aynı kütüphane çok, sonunda tasarruf önbellek satırları (ve böylece kazanmaya çalışan performans) kullanarak dinamik bağlama göreli kullanarak statik bağlama. (Sürece modern işletim sistemleri statik olarak bağlı ikili aynı kesimleri fark için yeterince akıllı. Sabit, bilen var mı?) gibi

Başka bir sorun: yükleme zamanı. Bir noktada yükleme masraflarını ödemek zorunda. Ödeme yaparken bu maliyet OS de kullandığınız bağlantı ne olarak nasıl çalıştığını bağlıdır. Belki de buna ihtiyacın var o kadar para koymak istiyorum.

-Vs statik-dinamik bağlama geleneksel olduğunu unutmayındeğilikisi de dahil nesne dosyaları için aşağıya ayrı bir derleme çünkü optimizasyon sorunu. Ancak, bu gerekli değildir: bir derleyici olabilir prensip olarak, "derleme" "statik kütüphaneler" sindirilmiş AST form başlangıçta, ve "Bağlantı" onları ekleyerek bu ASTs için olanları oluşturulan ana kod, böylece güçlendirici genel en iyi duruma getirme. Kullandığım sistemlerin hiçbiri bunu nasıl çalıştığı hakkında yorum yapamam.

Performans soruları cevaplamak için bir yoldurher zamanTest ve dağıtım ortamı mümkün olduğunca test ortamı kullanın).

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • DrakeVEVO

    DrakeVEVO

    17 AĞUSTOS 2009
  • Matt Davis

    Matt Davis

    4 ŞUBAT 2006
  • TechBalance

    TechBalance

    12 HAZİRAN 2011