Domanda

Se volessi creare un widget dall'aspetto gradevole che rimanga in esecuzione in background con un piccolo ingombro di memoria, da dove inizierei a creare l'applicazione Windows.Il suo obiettivo è mantenere un elenco aggiornato di elementi fuori da un servizio web.Simile a un lettore RSS.

Nota:Il livello dati si connetterà tramite REST, di cui ho già una dll C#, che presumo non influirà troppo sull'impronta.

Ovviamente mi piacerebbe utilizzare un bel progetto WPF, ma la dimensione iniziale di ~ 60.000k è troppo grande.

*L'applicazione dei moduli C# è di circa ~ 20.000k

*Moduli C++ ~16.000k

*CLR o MFC molto più piccolo, inferiore a 5

C'è un modo per ridurre il WPF o i moduli?e se sono bloccato a usare CLR o MFC quale sarebbe il modo più semplice per renderlo carino.(la mia esperienza con MFC sta creando molti moduli premio)

Aggiornamento:Una precisazione Le dimensioni sopra indicate rappresentano la memoria utilizzata durante l'esecuzione del processo, non l'eseguibile.

È stato utile?

Soluzione

Rif:

Aggiornamento:Chiarimento Le dimensioni di cui sopra sono la memoria utilizzata quando viene eseguito il processo, non l'eseguibile.

Ok, quando esegui una piccola app C# Win Forms, la quantità minima di RAM riservata è di circa 2 mega, forse 4 mega.Questo è solo un set di lavoro che crea.Non sta utilizzando attivamente tutta questa memoria o qualcosa di simile.Si limita a riservare tanto spazio in anticipo in modo da non dover eseguire richieste lunghe/lente/costose per più memoria in seguito, se necessario.

Prenotare in anticipo una dimensione più piccola è probabilmente una falsa ottimizzazione.

(Puoi ridurre il working set con una chiamata pinvoke se è davvero importante.Vedere pinvoke per 'imposta la dimensione del set di lavoro del processo' )

Altri suggerimenti

Se "hai già una dll C#" che intendi utilizzare, è necessario che .net sia già installato sul computer di destinazione.

In tal caso, non è necessario che un'app C# Win Forms si avvicini a 20 mega.Il modulo di vincita di tipo Hello World più piccolo sarebbe di 7 kilobyte.

Se deve essere davvero il più piccolo possibile, usa il semplice C e parla direttamente con l'API di Windows.

Tuttavia, poiché il CLR verrà caricato comunque a causa della dll .NET, opterei per qualcosa di meno doloroso e utilizzerei semplicemente C# anche per l'interfaccia utente.

Perché non utilizzare Silverlight?Ecco un articolo che parla di fare proprio questo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top