2011-11-28 18 views
7

Per quanto ne so, le applicazioni WPF dovrebbero funzionare più velocemente delle applicazioni Windows Form perché le applicazioni WPF utilizzano DirectX per il rendering anziché GDI. Ma quale tipo di applicazione inizierà più velocemente: WPF o Windows Form? L'ora di inizio sarà all'incirca uguale o un tipo di applicazione sarà notevolmente più veloce dell'altra?Quale tipo di applicazione si avvia più velocemente: Windows Form o WPF?

Non obiettivo alcun sistema operativo specifico.

+0

Stai mirando a sistemi operativi specifici? –

+0

No, sono solo curioso di sapere come differiscono le prestazioni iniziali tra i diversi tipi e perché. –

risposta

2

Penso che l'ora di inizio sarà all'incirca la stessa .. Ho recentemente creato alcune applicazioni WPF e in alcuni casi penso che il tempo di caricamento iniziale sia un po 'più lento delle forme di vincita, ma non è molto e WPF più di compensa quando l'applicazione è in esecuzione

0

Dalla mia esperienza, penso che WPF sia abbastanza reattivo all'inizio rispetto alle winform. Tuttavia, la domanda è difficile, soprattutto considerando che WPF può contenere l'altro e viceversa.

mi piacerebbe seguire la filosofia di questo articolo: http://joshsmithonwpf.wordpress.com/2007/09/05/wpf-vs-windows-forms/

WPF e WinForms non sono solo lo stesso strumento, e nessuno dei due si suppone per sostituire l'altro;)

La domanda ha un molti duplicati su questo forum, si prega di controllare qui per un collegamento e discussione e tutti loro: WPF vs. Windows Forms

+0

Non hai mai provato a utilizzare le applicazioni WPF su Windows XP, con il rumore di esso :) –

3

Solo per sottolineare, nella mia esperienza il renderer WPF è in effetti un po 'più lento di Windows Form, nonostante l'utilizzo di DirectX . Ciò è dovuto al fatto che molti calcoli di tesselazione e layout vengono eseguiti sul lato CPU, il che annulla in modo efficace il guadagno in termini di prestazioni dell'uso della GPU.

solo Google in giro per "WPF lento" o "WPF Performance" e troverete gli sviluppatori inorriditi scioccato di apprendere il loro tempo e lo sforzo speso conversione WinForms a WPF a causa della rotazione su GPU è stato sprecato, come il risultato è più lento rispetto all'applicazione originale.

Tuttavia ... dirò questo. WPF è di gran lunga superiore a Windows Form in termini di stile, capacità grafiche, produttività degli sviluppatori (databinding), animazione, aspetto e così via. Se le prestazioni sono davvero un problema, su determinate aree è possibile ottimizzare. Ad esempio, sapevi che puoi ottenere un'API per scrivere direttamente in bitmap in WPF (vedi la classe WriteableBitmap) per fare operazioni tipo GDI in memoria? Questo è (sorprendentemente) circa 20 volte più veloce delle primitive WPF per alcune operazioni.

Analogamente, è possibile utilizzare la virtualizzazione per migliorare le prestazioni dei datagrids, ecc. Telerik ha un esempio della sua griglia che scorre 1.000.000 righe a framerate interattivi.

In conclusione, pensa a cosa stai facendo e vedi esempi simili sul web. Stai realizzando la dataacquisition e visualizzazione scientifica in tempo reale o solo una linea standard di app aziendali? Confrontando esempi simili per vedere cosa è capace il framework ti aiuterà nella tua decisione.

Aggiornamento 2013 Q3

come aggiornamento, in vari progetti che sto vedendo ora più veloce e prestazioni più veloci da WPF spostando tutto e di più fuori dal thread dell'interfaccia utente. Per esempio. lascia il thread dell'interfaccia utente solo per l'interfaccia utente, fai tutto il lavoro possibile usando Task Parallel Library o RX. Rendi tutto asincrono e non bloccare il thread dell'interfaccia utente mentre aspetti.

Elimina gli errori di associazione poiché questi contribuiscono ai problemi di prestazioni WPF.

È possibile spostare le animazioni (ad esempio attendere o caricare animazioni) su un thread diverso per l'animazione priva di glitch. È possibile utilizzare render-to-bitmap durante le transizioni animate.

La lunga storia breve? È possibile ottenere grandi prestazioni dalle applicazioni WPF (così come l'interfaccia utente slick), ma è necessario mettere un po 'più di lavoro!

Problemi correlati