SORU
9 Mart 2010, Salı


Neden yeni bir Başlık yazın .Net 4.0 referans tipi (sınıfı) ve değer tipi (yapı)

Cevap ve/veya bu konuda bir görüş var mı?

Dizilerini normalde çok büyük olması daha mantıklı bu ders daha yapılar kullanmak olur sanıyorum. Sen ne diyorsun?

CEVAP
2 Mayıs 2011, PAZARTESİ


Microsoft basitlik çıkarlarını tüm dizi tipleri referans tipleri yaptı.

Ben şahsen bunun bir hata olduğunu düşünüyorum. 4'den fazla alanı olan dizilerini çok sıradışı ve daha typeful bir alternatif ile değiştirilmesi gereken neyse (F kayıt türü gibi#) sadece küçük dizilerini pratik ilgi. Benim kriterler 512 bayt Kutusuz dizilerini hala kutulu dizilerini daha hızlı olabileceğini gösterdi.

Hafıza verimliliği bir endişe olmasına rağmen, baskın sorun yükü olduğuna inanıyorum .Çöp toplayıcı NET. Ve . ayırma toplama ^em>çok pahalı.Çöp toplayıcı çünkü NET çok ağır (JVM göre örneğin) getirilmiştir. Ayrıca, varsayılan .NET GC (iş istasyonu) henüz parallelized olmamıştır. Sonuç olarak, dizilerini kullanan paralel programlar tüm çekirdekleri paylaşılan çöp toplayıcı için uğraşmak, hayat, ölçülebilirlik yok eziyet. Bu sadece baskın ilgilendirmez ama, bildiğim kadarıyla bu sorun incelediklerinde, tamamen Microsoft tarafından ihmal edildi.

Başka bir endişeye sevk sanal. Referans türleri ve alt türleri, bu nedenle, kendi üyeleri genellikle sanal üzerinden çağırılan gönderme desteği. Buna karşılık, değer türleri, üye çağırma tamamen açık ve her zaman doğrudan bir işlev çağrısı olarak gerçekleştirilebilmesi destek alt edemez. Sanal sevk CPU edemiyor program sayacı nerede biteceğini tahmin etmek çünkü modern donanım üzerinde son derece pahalıdır. JVM optimize sanal ama göndermek için büyük çaba sarf etmektedir .NET değil. Ancak .NET sanal bir kaçış değer türleri şeklinde gönderme sağlar. Yani dizilerini değer türleri olarak temsil eden, yine, önemli ölçüde geliştirilmiş performans alabilir. Örneğin, arama GetHashCode 2-demet, bir milyon kez alır 0.17 s ama aradığın üzerinde eşdeğer bir yapı alır sadece 0.008 s, yani değeri yazın 20× daha hızlı başvurusunu yazın.

Dizilerini bu performans sorunları, yaygın olarak bilinmiştir gerçek bir durum sözlüklere anahtar olarak dizilerini kullan. Aslında tesadüfen bu konuyu aşağıdaki bağlantıdan Yığın Taşması soru F# runs my algorithm slower than Python! yazar nerede F# program çıktı için daha yavaş Pitonu tam da o yüzden kullanıyordu kutulu dizilerini. El kutulama# program birkaç kez daha hızlı ve daha hızlı Python daha. Bu konularda asla dizilerini değer türü tarafından temsil edilen ve başlamak için başvuru türleri değil olsaydı ortaya çıkmıştı

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Howard Pinsky

    Howard Pinsk

    6 AĞUSTOS 2006
  • MultiPlayStationMan

    MultiPlaySta

    17 Aralık 2009
  • Stevie

    Stevie

    2 Mayıs 2010