2008-12-15 21 views
15

XAML derlendiğinden, bu gibi kodların yürütülmesinde bir fark olmamalıdır. (Kod gibi)
Win: düşündüğüm gibiWinforms ve WPF'nin performans karşılaştırması

Form formPeter = new Form(); 
Textbox textbox = new Textbox(); 
Label l1 = new Label1(); 

Xaml, zamanında çözümlenen almaz ... :-)

Ama ne kontrollerin çok büyük formların/yürütme render hakkında

? Hangi teknoloji daha hızlıdır?

cevap

20

? Korkarım ki senin sorununun basit bir cevabı yok.

Çalışma zamanında ayrıştırılmamış XAML hakkındaki yorumunuz hem doğru hem de yanlıştır. XAML ayrıştırılmamış BAML adlı bir normalleştirilmiş bir ikili sürümü (uygulamanızda bir kaynak olarak gömülü) adlı çalışma zamanında ayrıştırılan olduğunu. DirectX'in GDI'dan daha hızlı olduğunu söylemek de bir sadeleştirmedir - WPF ve GDI tabanlı oluşturma teknolojileri sadece farklı performans özelliklerine sahiptir. Örneğin, WPF korunmuş bir oluşturma modu kullanır, oysa WinForms ve diğer GDI tabanlı teknolojiler kullanmaz. WPF nesneleri, çok daha ağır olma eğilimindedir, çünkü bunlar, winform'ların muadillerinden daha birçok özelliğe sahiptir. GDI'nın oldukça hızlı ilerlemesi ve WPF ve XAML ile sadece nispeten kısa bir sürede nasıl yapılacağına dair onlarca yıllık bilgi birikimimiz var.

WPF uygulamaları yazmak için yeterince hızlıdır, ancak öğe sayınızın patlamaması (örneğin çok karmaşık şablonlar oluşturarak ve ardından kullanıcı arayüzünüzde yüzlerce veya binlerce kez tekrarlayarak) sürekli olarak uyanık olmanız gerekir.). Ayrıca WPF farklı grafik donanımlarında farklı şekilde çalışır (DirectX'i dahili olarak çağırır). WPF'de, 2B içerik, yazılımda tamamen oluşturulmuş olsa bile (sanal bir makinede olduğu gibi), ancak çok sayıda öğeyle animasyonlu, anti-aliased 3D gerçek GPU gücü gerektiriyorsa, iyi olmalıdır. Zaman ilerledikçe ve grafik donanımları daha güçlü ve yaygın hale geldikçe ve WPF'nin nasıl performans ayarlayacağı konusunda bilgi sahibi olduktan sonra WPF'nin daha ileriye doğru çekildiğini görmeliyiz (şimdi bazı senaryolar için…). Yani sanırım cevap "buna bağlı".

+0

Bağımlılık özellik değerleri, yalnızca varsayılan değerlerinden farklı olarak kaydedilir, böylece bellekte büyük tasarruf sağlanır. –

+3

Terminal sunucusunda performans hakkında biraz merak ve biraz kötümserim. – Guge

+2

Aynı zamanda olmalısınız, Guge. WPF, grafikleri ilkel komutlar veya kontrolleri temsil eden belirteçler yerine gönderir. AFAIK, Microsoft da bu durumu düzeltmek için hiçbir şey yapmaya kararlı değil. –

6

WPF, yerel Windows GDI yerine (daha hızlı olan) DirectX'i kullanır.

Zaten bildiğiniz gibi, Yerel GDI bitmap tabanlı. WPF, vektör tabanlı olduğundan, WPF, GDI ile kıyaslandığında çok daha iyi bir şekilde donanım desteğinden yararlanabilir.

WPF veya Winform'ları tercih etme kararı, başka faktörlere de bağlıdır - UI'de ihtiyaç duyduğunuz esneklik, uygulamanızın ne tür medya gereksinimlerini desteklemesi vb. WPF, Winformların yerine geçmez. tüm problemler için gümüş bir kurşun değildir.

WPF, daha fazla donanım hızlandırma özelliği ile Winform uygulamalarınızdan çok daha iyi bir performans sunabilir.

Birbirinden ilginç birkaç blog okuyorum.

Teknoloji hızlıdır

John's Post

Rob's Post

3

WPF çizimi çok daha hızlıdır, ancak nesneler daha ağırdır. Eğer 1000 ayrı tuşa basarsanız, tarama olacaktır. Diğer taraftan, bu düğmeler önemli bir performans isabeti olmadan karmaşık şeffaflığa ve degradelere sahip olabilir.WPF'nin seyrek depolama altyapısı nedeniyle WPF nesneleri daha hafif olma eğiliminde olduğunu söyleyebilirim.