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ć?
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 –
Możesz użyć ngen lub można to zrobić ręcznie, wywołując 'RuntimeHelpers.PrepareMethod' dla metody. –
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