2014-08-28 5 views
6

Als .net reift, wurden die JIT-Fähigkeiten verbessert, um brilliant faul zu sein. Das heißt, keinen Maschinencode erzeugen, wenn er nicht benötigt wird. Im Allgemeinen ist das eine gute Sache.Forcing Aggressive JIT

Allerdings, wenn ich versuche, warmup an application mag ich eine aggressive JIT-Haltung bevorzugen. Gibt es eine Möglichkeit, eine .net-Anwendung so zu konfigurieren, dass alle Methoden einer Klasse JIT kompiliert werden, einfach weil die Klasse erstellt wurde?

Wenn ja, könnte mein bevorzugtes Objekt-Creation-Muster das Objekt-Diagramm meiner Anwendung instanziieren und ich hätte alles gleichzeitig JIT-fähig. Das wäre nett.

Kann dies getan werden?

+1

Sie können .NET Native betrachten. Afaik, im Moment ist es nur für Windows Store-Apps, aber sie werden später auf andere Typen erweitert. http://msdn.microsoft.com/en-us/library/dn584397(v=vs.110).aspx –

+0

Sie könnten ngen verwenden oder es könnte manuell durchgeführt werden mein Aufruf 'RuntimeHelpers.PrepareMethod' pro Methode. –

+0

Ist 'Generieren von Maschinencode [wenn benötigt] zur Laufzeit' ein grundlegender Teil eines JIT-Compilers? Es gibt immer den [Native Image Generator] (http://msdn.microsoft.com/en-us/library/6t9t5wcf (v = vs.110) .aspx), aber natürlich gibt es die [Kompromisse] (http: //blogs.msdn.com/b/clrcodegeneration/archive/2007/09/15/to-gen-or-not-to-ngen.aspx) zwischen den beiden. – PoweredByOrange

Antwort

0

Sie meinen, Sie alles Voraus-Zeit :-)

zusammengestellt wollen schließlich tat sie dies für Sie - announced at Build 2014:

Somasegar mir gesagt, dass Entwickler Microsoft gesagt, dass .NET war immer eine sehr produktive Sprache zum Programmieren, aber es lieferte nicht immer die Leistung, die sie suchten. "Wir haben an vielen Innovationen gearbeitet, um Entwicklern zu zeigen, dass .NET immer noch eine sehr brauchbare Plattform für Entwickler ist, die Apps in dieser modernen Welt entwickeln wollen", sagte er. Mit dem nativen nativen Compiler von Northeastern werden die Entwickler schnellere Startzeiten, geringere Speicherauslastung und insgesamt eine bessere Leistung sehen, verspricht Microsoft. Diese neue Funktion befindet sich derzeit in der Vorschau und ermöglicht es Entwicklern, sowohl die X64- als auch die ARM-Plattform anzusprechen.

Sie können try it out (Vorschau nur im Moment, und möglicherweise nur für ‚universal‘ apps so YMMV arbeiten, wie nützlich es ist), weitere Informationen sind available on MSDN

2

Als Randnotiz - Sie könnten Verwenden Sie NGen.exe, um ein natives Abbild Ihrer DLLs zur Bereitstellungszeit zu erstellen (Hinweis: Es ist keine perfekte Lösung - da es einige Nachteile hat - lesen Sie die Dokumentation sorgfältig durch)