.NET Framework 4 gyorsítás 64 biten

A Mai nap belefutottam egy érdekes problémába. Mégpedig abba, hogy 64 bitre fordítva a .NET Programomat, majd futtatva azt, valamiért iszonyat lassan indult el. 3-4x lassabban, mint a 32 bites változat. Kis utána járás után rájöttem, hogy valamiért nincsenek meg a natív 64 bites változatai a Framework-ben található szerelvényeknek

A Framework-ben igen sok kód található, amit egy alkalmazás használhat. Mint tudjuk a .NET alkalmazások indításkor fordulnak le az adott processzoron futtatható kóddá. Ezért, hogy egy alkalmazás elindítása ne tartson 1-2 napig, némi szabad helyért cserébe a Framework telepítő telepítés közben létrehozza a telepített szerelvények lefordított változatát az adott gépre.

A .NET 4.0 megjelenéséig ez volt a helyzet, ezért tartott a korábbi változatok telepítése olyan sokáig. A .NET 4 esetén más a helyzet. Ott egy szolgáltatás települ, ami akkor állítja elő a natív binárisokat, ha éppen a gép üresjáratban van. Ezzel az a probléma, hogy észrevételem szerint ezt a folyamatot a 32 bites binárisok gyártásával kezdi, még egy 64 bites rendszeren is.

Így abban az esetben, ha van egy kihasznált gépünk (Pl laptop), ami üresjáratban nem sokat fut, vagy közvetlenül a Framework telepítése után szeretnénk egy programot futtatni, akkor azt fogjuk tapasztalni, hogy az nagyon lassan fut, sok időt vesz igénybe az elindítása.

Ekkor manuálisan közbeavatkozhatunk és létrehozhatjuk manuálisan a binárisokat. Ehhez az NGEN nevezetű programot kell futtatnunk, amely létrehozza ezen binárisokat.

  1. Először is szükségünk lesz egy parancssora, méghozzá adminisztrátori jogokkal
  2. Ezután az alábbi két parancsot kell kiadnunk:
    cd C:\Windows\Microsoft.NET\Framework64\v4.0.30319
    ngen update
  3. 32 bites binárisokat az alábbi 2 parancs segítségével lehet frissíteni:
    cd C:\Windows\Microsoft.NET\Framework\v4.0.30319
    ngen update

Ezen parancsok futtatása CPU sebességtől függően eltarthat egy ideig, utána azonban nagy valószínűséggel megoldódik a lassú 64 bites .NET program probléma