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!
Stai mirando a sistemi operativi specifici? –
No, sono solo curioso di sapere come differiscono le prestazioni iniziali tra i diversi tipi e perché. –