2014-08-28 15 views
6

Con la maturazione di .net, le funzionalità JIT sono state migliorate per essere estremamente pigri. Cioè, non produrre codice macchina se non è necessario. In generale, questa è una buona cosa.Forcing JIT aggressivo

Tuttavia, se sto provando a warmup an application, potrei preferire un atteggiamento JIT aggressivo. C'è un modo per configurare un'applicazione .net in modo che tutti i metodi di una classe vengano compilati JIT, semplicemente perché -la classe è stata costruita?

In caso affermativo, il mio schema di creazione oggetto preferito potrebbe istanziare il grafico dell'oggetto della mia appliazione, e vorrei avere tutto pronto per JIT contemporaneamente. Sarebbe carino.

Questo può essere fatto?

+1

Puoi guardare .NET Native. Afaik, al momento è solo per le app di Windows Store ma in seguito si espanderà in altri tipi. http://msdn.microsoft.com/en-us/library/dn584397(v=vs.110).aspx –

+0

Si potrebbe usare ngen o si potrebbe fare manualmente la mia chiamata 'RuntimeHelpers.PrepareMethod' per metodo. –

+0

Non 'sta generando il codice macchina [quando necessario] in runtime' una parte fondamentale di un compilatore JIT? C'è sempre il [Native Image Generator] (http://msdn.microsoft.com/en-us/library/6t9t5wcf (v = vs.110) .aspx), ma ovviamente ci sono i [trade-offs] (http: //blogs.msdn.com/b/clrcodegeneration/archive/2007/09/15/to-ngen-or-not-to-ngen.aspx) tra i due. – PoweredByOrange

risposta

0

vuoi dire, si vuole tutto ahead-of-time compilato :-)

Hanno finalmente fatto questo per voi - announced at Build 2014:

Somasegar mi ha detto che gli sviluppatori hanno detto che Microsoft .NET è stato sempre un linguaggio molto produttivo da programmare, ma non ha sempre fornito le prestazioni che stavano cercando. "Abbiamo lavorato su un sacco di innovazioni per mostrare agli sviluppatori che .NET è ancora una piattaforma molto valida per gli sviluppatori che desiderano creare app in questo mondo moderno," ", ha affermato. Con il compilatore nativo di .NET nativo, gli sviluppatori potranno vedere vedere tempi di avvio più rapidi, minore utilizzo della memoria e prestazioni migliori nel complesso , Microsoft promette. Questa nuova funzionalità è attualmente disponibile nell'anteprima e consente agli sviluppatori di scegliere come target sia le piattaforme X64 che ARM .

È possibile try it out (anteprima solo al momento, e forse solo a lavorare per le applicazioni 'universali' in modo YMMV da quanto sia utile), maggiori informazioni è available on MSDN

2

Come nota a margine - si potrebbe usa NGen.exe per produrre l'immagine nativa delle tue DLL al momento dell'implementazione (NB: non è una soluzione perfetta - ha alcuni svantaggi - controlla attentamente la documentazione)