NGEN é bom.

Publicado: 26/10/2005 em IntoSpaces

Alguém aqui já usou o NGEN?
A proposta deste aplicativo que já vem como .Net Framework, em linhas gerais, é antecipar a compilação JIT(Just in time) que acontece a cada vez que executamos nosso aplicativo pela primeira vez.

Quando executamos nossa aplicação pela primeira vez o compilador JIT "tranforma" o nosso assembly que contém código MSIL em linguagem de máquina e assim nossa aplicação é executada, com um pequeno custo nesta transformação.

Quando utilizamos o NGEN este tempo de transformação é "pulado", pois a transformação já está feita.

Isto é muito interessante, mas alguém usa?
Se a respostas foi não, eu digo pra vocês uma empresa que usa isto em seus produtos, a Microsoft.
Observando a instalação do .Net Framework podemos ver claramente que o instalador "passa" o NGEN nos assemblies padrões da FCL (Framework Class Library) e isto explica porque não temos um overhead gigantesco quando executamos nossas aplicações.

A conclusão disto tudo é que podemos e DEVEMOS utilizar o NGEN para otimizar a nossa aplicação, fazendo com que ela seja executada de forma mais rápida, assim o usuário não vai falar abobrinha se ele se irritar com alguma demora eheheh
Mas vale lembrar que é bom utilizarmos o método do instalador do framework. Devemos utilizar o NGEN no momento da instalação e não quando compilamos a aplicação e a preparamos para distribuição, isto fará com que ela seja transformada extamente de acordo com as capacidades da máquina do cliente e não um código genérico.
Isto pode parecer paranóia… bom deve ser mesmo eheheh mas quanto mais otimizado melhor!

Abaixo segue o Help do NGEN para quem se interessou!

C:WINDOWSMicrosoft.NETFrameworkv2.0.
50727ngen.exe
Microsoft (R) CLR Native Image Generator – Version 2.0.50727.26
Copyright (C) Microsoft Corporation 1998-2002. All rights reserved.

Usage: ngen <action> [args] [/nologo] [/silent] [/verbose]
       ngen /? or /help

    /nologo    – Prevents displaying of logo
    /silent    – Prevents displaying of success messages
    /verbose   – Displays verbose output for debugging

Actions:
    ngen install <assembly name> [scenarios] [config] [/queue[:[1|2|3]]
        Generate native images for an assembly and its dependencies
        and install them in the Native Images Cache
        If /queue is specified compilation job is queued up.  If a priority
        is not specified, the default priority used is 3.
    ngen uninstall <assembly name> [scenarios] [config]
        Delete the native images of an assembly and its dependencies from
        the Native Images Cache.
    ngen update [/queue]
        Update native images that have become invalid
        If /queue is specified compilation jobs are queued up.
    ngen display [assembly name]
        Display the ngen state
    ngen executeQueuedItems [1|2|3]
        Executes queued compilation jobs.
        If priority is not specified all queued compilation jobs are done.
        If priority is specified compilation jobs with greater or equal.
        priority than the specified are done.
    ngen queue [pause|continue|status]
        Allows the user to pause and continue the NGen Service Queue, and to
        query its status.

Scenarios:
    /Debug          – Generate images that can be used under a debugger
    /Profile        – Generate images that can be used under a profiler
    /NoDependencies – Generate the minimal number of native images
                      required by this scenario

Config:
    /ExeConfig:<path to exe> – Use the configuration of the specified
                 executable assembly
    /AppBase:<path to appbase directory> – Use the specified directory as
                 the appbase

*********************************************************
Artigo: JIT Compilation and Performance – To NGen or Not to NGen? – Cortesia do amigo Fabio Galuppo
http://codeguru.earthweb.com/columns/Experts/article.php/c4651/

Mais dois artigos interessantes que podem sanar algumas dúvidas sobre performance e o NGen
Smart Client Application Performance
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpag/html/scag-ch08.asp

Improving Managed Code Performance
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpag/html/scalenetchapt05.asp

Performance
http://www.windowsforms.net/Articles/default.aspx?PageID=1&Cat=Performance&ModuleFilter=131&tabindex=3

NGen Revs Up Your Performance with Powerful New Features
http://msdn.microsoft.com/msdnmag/issues/05/04/NGen/default.aspx

Ainda estou procurando um gráfico de comparação, se alguém descobrir manda aí!!

[]’s
Shinji

Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s