2014-08-28 13 views
6

Wraz z dojrzewaniem .net, możliwości JIT zostały ulepszone tak, aby były leniwie. Oznacza to, że nie produkuj kodu maszynowego, jeśli nie jest potrzebny. Ogólnie rzecz biorąc, jest to dobre.Wymuszanie Aggressive JIT

Jednakże, jeśli próbuję uzyskać warmup an application, mogę preferować agresywną postawę JIT. Czy istnieje sposób skonfigurowania aplikacji .net tak, aby wszystkie metody klasy były kompilowane JIT, po prostu dlatego, że-klasa została skonstruowana?

Jeśli tak, mój ulubiony wzorzec obiektowo-kreacyjny może utworzyć wystąpienie obiektu-wykresu mojej aplikacji, a ja powinienem mieć wszystko przygotowane JIT jednocześnie. To byłoby miłe.

Czy to można zrobić?

+1

Możesz obejrzeć .NET Native. Afaik, teraz jest tylko dla aplikacji Sklepu Windows, ale później rozszerzy się na inne typy. http://msdn.microsoft.com/en-us/library/dn584397(v=vs.110).aspx –

+0

Możesz użyć ngen lub można to zrobić ręcznie, wywołując 'RuntimeHelpers.PrepareMethod' dla metody. –

+0

Czy "generowanie kodu maszynowego [w razie potrzeby] w czasie wykonywania" nie jest podstawową częścią kompilatora JIT? Zawsze istnieje [Generator obrazów macierzystych] (http://msdn.microsoft.com/en-us/library/6t9t5wcf (v = vs.110) .aspx), ale oczywiście istnieją [kompromisy] (http: //blogs.msdn.com/b/clrcodegeneration/archive/2007/09/15/to-ngen-or-not-to-ngen.aspx) między tymi dwoma. – PoweredByOrange

Odpowiedz

0

znaczy, chcesz wszystko na przodzie-of-time skompilowany :-)

wreszcie zrobił to one dla ciebie - announced at Build 2014:

Somasegar powiedział mi, że deweloperzy powiedział, że Microsoft .NET był zawsze Bardzo produktywny język do programowania, ale nie zawsze zapewniał on wydajność, której szukał. "Pracowaliśmy nad wieloma innowacjami, aby pokazać programistom, że .NET to wciąż bardzo opłacalna platforma dla deweloperów, którzy chcą tworzyć aplikacje w tym nowoczesnym świecie", powiedział . Korzystając z natywnego kompilatora .NET, programiści zyskają szybszy czas uruchamiania, mniejsze zużycie pamięci i ogólnie lepszą wydajność, jaką zapewnia firma Microsoft. Ta nowa funkcja jest obecnie dostępna w podglądzie i umożliwia programistom kierowanie na platformy X64 i ARM .

Można try it out (podgląd tylko na chwilę, a być może tylko pracować dla aplikacji „uniwersalne” tak YMMV, jak przydatna jest), więcej informacji znajduje available on MSDN

2

Na marginesie - mogłeś użyj NGen.exe, aby uzyskać natywny obraz plików dll w czasie wdrażania (uwaga: nie jest to idealne rozwiązanie - ponieważ ma pewne wady - dokładnie sprawdź dokumentację)