2010-06-01 27 views
34

Herhangi bir CPU/x64 için WPF uygulamamı kurarsam, başlatılması (yaklaşık 20 saniye içinde) veya yeni bir tane yüklemek için daha uzun bir süre beklediğini fark ettim. x86'da başlatılmışsa kontroller (& hata ayıklama modlarında, VS'nin içinde veya dışında). Bu en basit WPF uygulamaları ile bile gerçekleşir. Sorun, this MSDN thread'da tartışılmıştır, ancak orada bir cevap verilmemiştir. Bu yalnızca .NET 4.0 ile olur - 3.5 SP1'de, x64 x86 kadar hızlıydı. İlginç bir şekilde, Microsoft, VS2010'daki yeni bir WPF projesinin varsayılanı x86 olduğundan bu problemi biliyor gibi görünüyor.WPF, .NET Framework 4.0'da x64'te yavaş yavaş

Bu gerçek bir hata mı yoksa yanlış mı yapıyorum?

DÜZENLEME: Muhtemelen bununla ilgili: Slow Databinding setup time in C# .NET 4.0. Veri bağlamada yoğun kullanıyorum.

cevap

68

Aslında WPF uygulamaları için varsayılan proje türünün x86 olduğu 2 ana neden vardır.

  • IntelliTrace ayıklama yalnızca x86 ile çalışır ve varsayılan proje şablonları, yıldız özelliklerinden biri ile işe yaramadı eğer oldukça kötü olmazdı.
  • Pek çok geliştirici, AnyCPU öğelerinin 64 bit makinelerde x64 olarak çalışacaklarını ve 32 bit DLL'lerinin güvendiği bazı OLEDB sürücüleri gibi 64 bit türlerde bulunmadığını fark ettiklerini fark etmemişlerdi. DLL, vb.

Yaşadığınız başlangıç ​​zamanı sorunları için neredeyse NGEN ile ilgili bir sorun gibi görünüyor. X64 ve x86 işlemleri için farklı NGEN önbellekleri bulunduğundan 64 bitlik NGEN önbelleğinin yeniden oluşturulması veya güncellenmesi gerekebilir. yükseltilmiş bir komut isteminden aşağıdaki çalıştırmayı deneyin:

CD C:\Windows\Microsoft.NET\Framework64\v4.0.30319 
NGEN update 

Bu zaten NGEN üzere işaretlenen meclisleri için yerel görüntüleri yeniden inşa etmek komuttur. Ayrıca eğer meclisler de GAC'de değillerse, bunu yapmak için uğraşmak istemediğim için muhtemelen NGEN'e başvurunuzu iyi yapmazsınız. Ancak çerçeve meclisleri, araç takımı meclisleri, vb. Hepsi NGEN'd olmalıdır.

(ı yüklenemedi meclisleri hakkında yukarıdaki komutu çalıştırdığınızda arada, çeşitli hatalar aldım. Çoğunlukla, SQL ve Visual Studio montajları. Idi)

+14

KUTSAL ****, bu _WORKED_! !! Bunu asla anlayamazdım. Gerçekten soyadına kadar yaşıyorsun dostum. Teşekkürler * 1000! –

+0

Harika, bunu duyduğuma sevindim. – Josh

+3

Jeebus, bu tavsiye harikalar yaratıyor! Dünyadaki önbellekleri güncel tutmak için, bunun etkisini görmeyi nasıl başardılar? MS için büyük başarısız. Bu arada, bazı güncellemeleri yükledikten sonra bunu yeniden yapmanız gerekiyor. –