علیرضا علی‌مردان
علیرضا علی‌مردان
خواندن ۱ دقیقه·۲ سال پیش

دانت 7 و Native AOT

یکی از ویژگیهای که در دانت نسخه 7 (.NET 7) روی آن مانور زیادی شده بحث مربوط به Native AOT.

کلمه AOT مخفف ahead-of-time است و به این اشاره دارد که کدهای شما پیشاپش و با توجه به شناخت شما از سیستم هدف جهت اجرا توسط کامپایلر (بدون استفاده از JIT) مستقیما به کدهای بومی خاص آن سیستم عامل کامپایل شده است.

در واقع پیش‌دستی کردن در کامپایل IL به کدهای بومی سیستم هدف باعث می‌شود برنامه برای اجرا دیگر نیاز به Just-In-Time(JIT) در زمان اجرا نداشته باشد.

این ویژگی به کاهش حافظه مورد نیاز از یک سو و افزایش سرعت آماده سازی برنامه از سوی دیگر منجر خواهد شد. به همین خاطر در سناریوهایی که نیاز به ایجاد نمونه های زیادی از یک برنامه وجود دارد (مثل فضاهای ابری) و پردازش های توزیع شده گزینه بسیار مناسبی است.

اما خب استفاده از این ویژگی مستلزم شناسایی دقیق محیط اجرا مثل Linux x64 یا Windows x64 است، دقیقا مانند رفتاری که برای برنامه های self-contained app می‌شود.

چرخه اجرای معمول با استفاده از JIT
چرخه اجرای معمول با استفاده از JIT

استفاده از این ویژگی در کنار مزایای خود دارای محدودیتهایی است که شامل موارد زیر است:

  • عدم امکان بارگزاری داینامیک در زمان اجرا مثل Assembly.LoadFile
  • عدم امکان ایجاد کد در زمان اجرا مثل System.Reflection.Emit
  • عدم دسترسی به C++/CLI
  • محدودیتهای اعمال شده مربوط به trimming
  • افزایش حجم نسخه نهایی در زمان انتشار بخاطر نیاز به دربرداشتن کلیه کتابخانه‌مورد استفاده.


native aotدات نتnet7افزایش کاراییافزایش حجم
علیرضا علیمردان-یک برنامه‌نویس.علاقه‌مند به حوزه فن‌آوری اطلاعات،هوافضا و ریاضیات.
شاید از این پست‌ها خوشتان بیاید