توصیه هایی در استفاده از NGEN
اندازه‌ی قلم متن
تخمین مدت زمان مطالعه‌ی مطلب: یک دقیقه

یکی از مسائل ربز و فنی در دنیای .NET  استفاده یا عدم استفاده از NGEN است. در مقاله کوتاه زیر بهترین مکان‌های استفاده و عدم استفاده از آن را در چند بند خلاصه می‌کنم:

کجا از NGEN استفاده کنیم؟
  • برنامه هایی که مقدار زیادی کد مدیریت شده قبل از نمایش فرم برنامه دارند. مانند برنامه Blend که مقدار زیادی کد در شروع برنامه دارد. استفاده از ngen می‌تواند باعث افزایش کارایی و سرعت اجرای برنامه شود
  • فریم ورک ها، dll‌ها و کامپوننت‌های عمومی: کد‌های تولید شده توسط JIT قابل اشتراک بین برنامه‌های مختلف نیستند ولی NGEN قابل اشتراک مابین برنامه‌های مختلف می‌باشد. بنابراین اگر کامپوننتی دارید که در بین برنامه‌های مختلف مشترک استفاده می‌شود، این کار می‌تواند سرعت شروع برنامه‌ها را بالا برده استفاده از منابع سیستم را کاهش دهد
  • برنامه هایی که در terminal server‌ها استفاده می‌شوند: توضیح فوق در مورد این برنامه‌ها نیز صادق است.
کجا از NGEN استفاده نکنیم؟
  • برنامه‌های کوچک: عملا سرعت JIT آن قدر بالا است که NGEN کار را کندتر خواهد کرد!
  • برنامه‌های سروری که سرعت شروع آن مهم نیست: برنامه‌ها یا dll هایی که سرعت شروع آنها مهم نیست، اگر NGEN نشوند سرعت بیشتری برای شما به ارمغان خواهند داشت چون JIT در هنگام اجرا، کد را بهینه می‌کند ولی NGEN این کار را انجام نمی‌دهد. 
چند نکته دیگر که باید در نظر داشته باشید این است که قرار نیست NGEN مثل یک جادوگر کد شما را جادو کند که سریع‌تر اجرا شود. تنها کد را از قبل به کد native مربوط به معماری cpu شما کامپایل خواهد کرد که شروع اجرای آن سریع‌تر شود. البته این جادوگر :) قربانی هم می‌خواهد. قربانی آن optimization‌های داخلی JIT است که در برنامه شما اعمال نخواهد شد. بنابراین در رابطه با استفاده از NGEN نهایت دقت را به خرج دهید.
  • #
    ‫۱۰ سال و ۷ ماه قبل، یکشنبه ۲۷ بهمن ۱۳۹۲، ساعت ۱۹:۵۲
    بد نیست به این مطلب (NGEN.EXE در دات نت) یک سری بزنید.
  • #
    ‫۱۰ سال و ۷ ماه قبل، سه‌شنبه ۲۹ بهمن ۱۳۹۲، ساعت ۲۲:۵۸
    می خواستم بپرسم آیا می‌توان با این برنامه فایل اجرایی برنامه را Standalone کرد مثل فایل‌های دلفی۷ که همه جا اجرا میشه ؟
    • #
      ‫۱۰ سال و ۷ ماه قبل، چهارشنبه ۳۰ بهمن ۱۳۹۲، ساعت ۰۴:۰۰
      خیر. برای اجرای برنامه هنوز نیاز به فریمورک دات نت دارید.