.NET programlarınızı Native Image Generator ile hızlandırın

Ben Kenobi

Müdavim
Müdavim
Katılım
6 Kasım 2011
Mesajlar
7,338
Reaksiyon puanı
3,156
Puanları
1,358
Sisteminizde başta C# olmak üzere .NET platformu ile yazılmış veya bu platforma ait kütüphane kullanan yazılımlarınız olabilir.
Bu yazılımların genelde az bir kısmı derlenmiştir, çoğu kısmı .NET'e ait sanal makine içerisinde çözümlenir yani interpret edilir.
Ancak aşağıdaki kodu çalıştırarak bu platforma ait kütüphaneleri ve executable binarylerin daha fazla kısmının derlenmesi için Windows'u zorlayabilirsiniz, bu sayede bu platforma ait bir dil ailesi ile yazılmış veya kütüphane kullanan programlarınızın açılma hızı artacaktır, çalışma hızı da bir miktar artacaktır.

Aşağıdaki kodu
Native Image Generator.cmd
ismiyle kaydedin
Kod:
"%windir%\Microsoft.NET\Framework\v2.0.50727\ngen.exe" update /force
"%windir%\Microsoft.NET\Framework64\v2.0.50727\ngen.exe" update /force
"%windir%\Microsoft.NET\Framework\v4.0.30319\ngen.exe" update /force
"%windir%\Microsoft.NET\Framework\v4.0.30319\ngentask.exe" /runtimewide
"%windir%\Microsoft.NET\Framework64\v4.0.30319\ngen.exe" update /force
"%windir%\Microsoft.NET\Framework64\v4.0.30319\ngentask.exe" /runtimewide
timeout /t -1

Daha sonra çift tıklayarak çalıştırın.
Sisteminizde yüklü bileşenlere göre işlem 1 saat sürebilir.
Sürekli program yükleyip silen biriyseniz ayda bir çalıştırabilirsiniz.

Microsoft .NET Framework NGEN servisi zaten bu işi yapıyor diyebilirsiniz lakin bazı programlar bu servisteki assemblyler yerine JIT kullanabiliyor, dolayısıyla bu işlem gerçekleşmeyebiliyor veya gerçekleşmesi zamana dağıldığından aylar sürebiliyor, bu kod sayesinde işimizi tek seferde garanti olarak halletmiş oluyoruz.

Bu scriptin tüm .NET ailesini kapsayacak daha geniş hali, bir sonraki versiyon Registry Ayarları konusundaki paket içerisinde dağıtılacaktır.
Registry Ayarları
 

Ben Kenobi

Müdavim
Müdavim
Katılım
6 Kasım 2011
Mesajlar
7,338
Reaksiyon puanı
3,156
Puanları
1,358
Konuyu programlama kısmına açtım ama ev kullanıcıları da yararlanabilir çünkü çoğu kişide .NET ile yazılmış bir program veya kütüphane kullanan program vardır.
Scripti tüm .NET versiyonlarını kapsayacak şekilde güncelledim.
Kod:
@echo off
cd "%windir%\Microsoft.NET"

for /r %%f in (ngen.exe) do (
   if exist %%f (
       "%%f" update /force
   )
)
for /r %%f in (ngentask.exe) do (
   if exist %%f (
       "%%f" /runtimewide
   )
)

timeout /t -1
 
Üst