برداشت کلی شما از مقاله‌ی داده‌شده چیست؟

مقاله: همان‌طور که گفته شد گسترش در خط از گسترش ماکرو سریع‌تر است و دلیل آن این است که در گسترش در خط سر بار فراخوانی تابع (که شامل ذخیره‌سازی مقادیر ثبات‌ها و پرش است) دیگر وجود ندارد و خطوط مربوط به متن تابع مستقیما اجرا می‌شود. از جهت دیگر اما گسترش در خط می‌تواند باعث هدر رفتن حافظه شود زیرا به ازای هر محل از برنامه که تابع فراخوانی شده باشد، یک رونوشت از متن تابع در آن‌جا اضافه می‌گردد. در نتیجه استفاده از گسترش در خط معمولا در حالتی که متن تابع کوتاه است می‌تواند کارساز باشد. به‌طور مثال در زبان ++c، توابعی که عضو کلاس‌ها هستند در صورتی که در داخل تعریف کلاس تعریف شوند به‌طور پیش‌فرض در خط سازی می‌شوند. در غیر این صورت برنامه‌نویس می‌بایستی صراحتا از کلیدواژه inline استفاده کند. همچنین دلیل اشاره‌شده بالا، کامپایلر این زبان، توابع بزرگی که برنامه‌نویس صراحتا درخواست خطی‌سازی آن‌ها را کرده‌است، خطی‌سازی نمی‌کند. همچنین در برنامه‌نویسی تابعی، گسترش در خط معمولا پس از تبدیل کاهش بتا صورت می‌گیرد. گسترش در خط سر بار فراخوانی تابع را کاهش می‌دهد ولی دلیل اصلی انجام آن زمینه‌سازی برای بهینه‌سازی‌های دیگر است زیرا گسترش در خط اندازه برنامه را زیاد می‌کند و بهینه‌سازی‌های بهتری بر روی برنامه‌های با اندازه بزرگتر قابل انجام است. پیش‌بینی اثر نهایی گسترش در خط بر روی عملکرد برنامه پیچیده‌است و به دلیل اثر آن بر روی حافظه نهان دستورها، بسته به برنامه و اندازه حافظه نهان متفاوت است. همچنین میزان این تأثیر بین زبان‌های مختلف متفاوت است. به‌طور مثال در زبان‌های سطح پایین مانند c و fortran، به اندازه ۱۰ – ۲۰ ٪ افزایش سرعت مشاهده می‌شود، در حالی که در زبان‌های سطح بالاتر و انتزاعی‌تر گسترش در خط می‌تواند چندین مرحله از اجرای برنامه را حذف کند. مثال این‌گونه زبان‌ها، زبان سلف (زبان برنامه‌نویسی) است که ضریب بهبودی بین ۴ تا ۵۵ داشته‌است. کامپایلرها از روش‌های مختلفی برای تشخیص اینکه چه تابعی را گسترش در خط دهند، استفاده می‌کنند. این روش‌ها عبارتند از: مشخص شدن توابع توسط برنامه‌نویس دستورهای خط فرمان تشخیص خودکار کامپایلر گسترش در خط در بسیاری از زبان‌ها به صورت خودکار توسط کامپایلر صورت می‌گیرد و کامپایلر بررسی می‌کند که آیا این عمل برای سرعت برنامه مفید است یا خیر. همچنین کلیدواژه‌هایی مانند inline نیز …
برداشت:
در علوم کامپیوتر گسترش در خط به معنی جایگزینی دستور فراخوانی یک تابع با متن خود آن تابع است . این کار به صورت دستی توسط برنامه‌نویس (به‌طور مثال به وسیله کلیدواژه‌های تعریف‌شده زبان) یا به صورت خودکار (توسط کامپایلر) انجام می‌شود . این عمل بسیار شبیه به گسترش ماکرو است ، ولی تفاوت عمدهای که گسترش در خط دارد این است که در زمان کامپایل انجام می‌شود ولی جایگزینی ماکروها در زمان پیش از کامپایل صورت می‌گیرد و متن برنامه ورودی تحلیل‌گر کامپایلر تغییر پیدا می‌کند . مزیت گسترش در خط نسبت به ماکرو این است که ایرادهای ماکرو را از قبیل احتمال رعایت نشدن اولویت عملیات ریاضی ندارد .