2010-02-12 12 views
14

Attualmente sto valutando se creare un'applicazione Windows utilizzando C/C++ non gestito o in .NET e vorrei conoscere il tipo di prestazioni e reattività che è possibile con un'app gestita C# /. NET GUI?Esempi di app veloci .NET WPF/WinForms?

Non a caso sembra che le applicazioni più veloci (ad esempio chrome, spotify, ecc.) Siano scritte in C/C++ non gestito. Ho avuto difficoltà a trovare esempi di applicazioni .NET davvero buone e quindi vorrei un po 'di aiuto.

Qual è il miglior esempio di un'applicazione Windows .NET veloce e reattiva?

+2

Le app di Windows Form sono veloci quanto quelle non gestite. Le app WPF sono lente nel ridisegnare quando ridimensionate le finestre, ma in caso contrario possono essere veloci quanto non gestite. – CannibalSmith

+3

@Cannibal: non concordo con entrambe le affermazioni. 1. Molte applicazioni WPF sono tutte scattanti come le applicazioni non gestite durante la gestione del ridimensionamento. In generale, le applicazioni WPF gestiscono il ridisegno molto più velocemente rispetto alle tipiche tecniche non gestite quando sono coinvolte le animazioni (WPF usa Direct3D che è troppo complesso per la maggior parte non gestito). 2. Anche WinForms ha i suoi rallentamenti, ad esempio tende a essere più lento di entrambi non gestito e WPF per molti usi grafici avanzati come 3D, trasparenza, ecc. 3. Il codice non gestito può essere il più lento dei tre, a volte perché è così molto più lavoro per ottimizzarlo. –

+0

Potrebbe essere meglio cercare benchmark e tecniche, piuttosto che app arbitrarie che probabilmente non avrebbero alcuna rilevanza per il caso d'uso che stai pianificando. –

risposta

4

latest version of Bing Maps è scritto in silverlight che conta come codice gestito.

Live Mesh è scritto in qualche forma di .net (anche se penso che spedisca la propria versione di silverlight con esso così non ha altre dipendenze).

Alcuni anni fa, la maggior parte dei lettori RSS sono stati scritti in .net. Penso che la reattività sarà ridotta a quello che stai programmando piuttosto che a quello che usi. Alla fine della giornata con il multithreading puoi rendere l'applicazione reattiva mentre viene elaborata indipendentemente dal framework che utilizzi.

+0

Sembra che le mappe di Bing abbiano fatto passi da gigante - sembra il migliore esempio qui. – mythz

5

WorldWide Telescope è un'applicazione .NET ad uso intensivo di grafica che consente di esplorare un cielo notturno virtuale e molti altri oggetti relativi all'astronomia. Gestisce una quantità enorme di dati. Anche se sembra essere in beta perpetua, fornisce un'esperienza utente molto avvincente.

Windows Live Writer è un'altra applicazione .NET. Potrebbe non essere un'applicazione molto grande, ma eccelle in quello che fa, e non ho mai avuto problemi con la sua reattività.

+0

Devo dire che il WorldWide Telescope sembra piuttosto imploso. – mythz

1

TOAD per MySQL è un'applicazione .NET. È piuttosto scattante. Vedi http://www.toadsoft.com/toadmysql/faq.htm

Inoltre, la versione imminente di Visual Studion 2010 ha un sacco di UI scritto in WPF. La performance del Release Candidate sembra buona IMO.

2

Ecco uno dei miei preferiti.

http://www.vertigo.com/familyshow.aspx

Una volta installato, aprire la famiglia Windsor e cliccare in giro. Assicurati di provare:

  • I cursori "Ora" e "Zoom" nell'angolo inferiore sinistro e destro della finestra.
  • Digitando nella casella "filtro" in basso a destra

Family.Show ha diversi ritardi intenzionali inseriti per un'esperienza utente più interessante, per esempio, vengono usati animazioni durante la navigazione intorno all'albero di famiglia. Se modifichi il codice sorgente e cambi la durata di tutte le animazioni su "0", scoprirai che tutto avviene praticamente all'istante.

7

Paint.Net è un esempio Open Source di un'applicazione scritta in .Net.

1

Greenshot is an OSS .NET app, che MOLTE persone hanno impostato per iniziare con Windows (sostituisce l'app commerciale SnagIt). È Windows Forms. Un rapido controllo da parte di Process Explorer conferma che utilizzano NGEN per ridurre il tempo/overhead JIT (Greenshot.ni.exe).

GitHub for Windows is WPF (XUCL principalmente codificato a mano). Ovviamente tutte le operazioni git sono pass-through alla libreria nativa di libgit2.

La maggior parte dell'interfaccia utente di Visual Studio è gestita. Direi che è veloce (abbastanza veloce per me) e diventa più veloce con ogni versione, nonostante si spostino sempre più l'interfaccia utente da C++/Win32/COM a C#/WPF/.NET. VS gioca un sacco di trucchi per ottenere questa velocità. Il layout di IL è ottimizzato per i pattern di utilizzo dopo molte esecuzioni di profiling, post-build, e dopo l'installazione locale, l'IL è pre-jitted (NGEN), quindi la maggior parte del codice eseguito all'avvio è già codice nativo di NGEN.