اندازهی قلم متن
تخمین مدت زمان مطالعهی مطلب:
یک دقیقه
یکی از مسائل ربز و فنی در دنیای .NET استفاده یا عدم استفاده از NGEN است. در مقاله کوتاه زیر بهترین مکانهای استفاده و عدم استفاده از آن را در چند بند خلاصه میکنم:
کجا از NGEN استفاده کنیم؟
- برنامه هایی که مقدار زیادی کد مدیریت شده قبل از نمایش فرم برنامه دارند. مانند برنامه Blend که مقدار زیادی کد در شروع برنامه دارد. استفاده از ngen میتواند باعث افزایش کارایی و سرعت اجرای برنامه شود
- فریم ورک ها، dllها و کامپوننتهای عمومی: کدهای تولید شده توسط JIT قابل اشتراک بین برنامههای مختلف نیستند ولی NGEN قابل اشتراک مابین برنامههای مختلف میباشد. بنابراین اگر کامپوننتی دارید که در بین برنامههای مختلف مشترک استفاده میشود، این کار میتواند سرعت شروع برنامهها را بالا برده استفاده از منابع سیستم را کاهش دهد
- برنامه هایی که در terminal serverها استفاده میشوند: توضیح فوق در مورد این برنامهها نیز صادق است.
کجا از NGEN استفاده نکنیم؟
- برنامههای کوچک: عملا سرعت JIT آن قدر بالا است که NGEN کار را کندتر خواهد کرد!
- برنامههای سروری که سرعت شروع آن مهم نیست: برنامهها یا dll هایی که سرعت شروع آنها مهم نیست، اگر NGEN نشوند سرعت بیشتری برای شما به ارمغان خواهند داشت چون JIT در هنگام اجرا، کد را بهینه میکند ولی NGEN این کار را انجام نمیدهد.
چند نکته دیگر که باید در نظر داشته باشید این است که قرار نیست NGEN مثل یک جادوگر کد شما را جادو کند که سریعتر اجرا شود. تنها کد را از قبل به کد native مربوط به معماری cpu شما کامپایل خواهد کرد که شروع اجرای آن سریعتر شود. البته این جادوگر :) قربانی هم میخواهد. قربانی آن optimizationهای داخلی JIT است که در برنامه شما اعمال نخواهد شد. بنابراین در رابطه با استفاده از NGEN نهایت دقت را به خرج دهید.