payamvha/North_RAG huggingface dataset:
است که کد کارآمدتری را از آنچه که کامپایلر تولید می‌کند، بنویسید و پروژه‌های کوچک به این روش بهینه‌سازی نهایی نیاز دارند. امروزه کد نوشته می‌شود تا به عنوان ماشین‌های بسیاری بتواند اجرا شود. به عنوان یک نتیجه، برنامه نویسان و کامپایلرها همیشه از دستورالعمل‌های کارآمدتر ارائه شده توسط پردازنده‌های جدیدتر یا پیش فرض مدل‌های قدیمی تر استفاده نمی‌کنند. علاوه بر این، کدهای مونتاژ شده برای یک پردازنده خاص بدون استفاده از چنین دستورالعمل‌های تنظیم شده است که ممکن است در پردازنده دیگری غیرقطعی باشند، و انتظار
است در پردازنده دیگری غیرقطعی باشند، و انتظار تنظیم متفاوت از کد را دارند. به‌طور معمول امروز، به جای اینکه در زبان اسمبلی بنویسیم، برنامه نویسان از یک disassembler برای تجزیه و تحلیل خروجی یک کامپایلر استفاده می‌کنند و کد منبع بالا را تغییر می‌دهند تا بتوان آن را به‌طور مؤثر تر کامپایل کرد یا متوجه شد که چرا آن ناکارآمد است. کامپایلرها فقط در زمان اجرا می‌توانند کد ماشین را بر اساس داده‌های زمان اجرا، تولید کنند. این تکنیک به اولین موتورهای بیان منظم می‌رسد و با Java HotSpot و V8 برای جاوا اسکریپت گسترش
و با Java HotSpot و V8 برای جاوا اسکریپت گسترش پبدا کرده است. در برخی موارد بهینه‌سازی سازگاری ممکن است قادر به انجام بهینه‌سازی زمان اجرا بیش از توانایی کامپایلرهای استاتیک با تنظیم پارامترهای پویا با توجه به ورودی‌های واقعی یا سایر عوامل باشد. بهینه‌سازی پروفایل هدایت شده یک روش بهینه‌سازی تلفیقی پیش از زمان (AOT) بر اساس پروفایل‌های زمان اجرا است و شبیه به یک متد استاتیکی «مورد متوسط» که از تکنیک پویا بهینه‌سازی سازگاری است. کد خودمحور می‌تواند در پاسخ به شرایط زمان اجرا به منظور بهینه‌سازی کد تغییر
به شرایط زمان اجرا به منظور بهینه‌سازی کد تغییر کند. این در برنامه‌های زبان مونتاژ رایج بود. برخی از طرح‌های CPU می‌توانند برخی از بهینه‌سازی‌ها را در زمان اجرا انجام دهند. بعضی از نمونه‌ها عبارتند , , و . کامپایلرها می‌توانند به این برنامه کمک کنند که از ویژگی‌های این CPU بهره‌مند شوند، مثلاً از طریق برنامه‌ریزی دستورالعمل. بهینه‌سازی بستر وابسته و مستقل. بهینه‌سازی کد را می‌توان همچنین به‌طور گسترده به عنوان طبقه‌بندی پلت فرم‌های وابسته و تکنیک‌های مستقل از پلتفرم دانست. در حالی که آن‌هایی که در اکثر یا
از پلتفرم دانست. در حالی که آن‌هایی که در اکثر یا تمام سیستم عامل‌ها مؤثر هستند، تکنیک‌های وابسته به پلت فرم از ویژگی‌های خاص یک پلت فرم استفاده می‌کنند یا به پارامترهای بسته به پلت فرم تک یا حتی بر روی پردازنده تک تک تکیه می‌کنند؛ بنابراین ممکن است نوشتن یا تولید نسخه‌های مختلف از همان کد برای پردازنده‌های مختلف مورد نیاز باشد. به عنوان مثال، در مورد بهینه‌سازی سطح کامپایل، تکنیک‌های مستقل از پلت فرم، تکنیک‌های عمومی هستند (مانند حلقه، کاهش تماس‌های عملکردی، رویه‌های کارآمد حافظه، کاهش شرایط و غیره)، که
رویه‌های کارآمد حافظه، کاهش شرایط و غیره)، که اکثر معماری‌های CPU را در یک مسیر مشابه را شامل می‌شود یک نمونه عالی از بهینه‌سازی مستقل از پلت فرم با حلقه درونی نشان داده شده است، جایی که یک حلقه با یک حلقه درونی مشاهده شد، محاسبات بیشتری را در هر واحد زمان انجام می‌دهد تا یک حلقه بدون آن یا یک حلقه داخلی در حالی که حلقه است به حساب آورد. به‌طور کلی، این‌ها به منظور کاهش کل مسیر آموزش مورد نیاز برای تکمیل برنامه یا کاهش کل استفاده از حافظه در طول فرایند خدمت می‌کنند. از سوی دیگر، تکنیک‌های وابسته به پلت فرم
می‌کنند. از سوی دیگر، تکنیک‌های وابسته به پلت فرم شامل برنامه‌ریزی دستورالعمل، هماهنگی در سطح دروس، سطح هماهنگی داده‌ها، تکنیک‌های بهینه‌سازی حافظه پنهان (یعنی پارامترهای متفاوت در سیستم عامل‌های مختلف) و برنامه‌ریزی دستورالعمل مطلوب حتی در پردازنده‌های مختلف همان معماری ممکن است. کاهش قدرت. وظایف محاسباتی را می‌توان با روش‌های مختلف با کارایی متفاوت انجام داد. یک نسخه کارآمد با قابلیت معادل به عنوان یک کاهش قدرت شناخته شده است. برای مثال، کد قطعه زیر C را در نظر بگیرید که قصد دارد مجموع اعداد صحیح را از ۱
نظر بگیرید که قصد دارد مجموع اعداد صحیح را از ۱ به N بدست آورد: int i, sum = 0; for (i = 1; i &lt;= N; ++i) { sum += i; printf("sum: %d\n", sum); این کد (با فرض وجود سرریز حسی) می‌تواند با استفاده از یک فرمول ریاضی مانند: int sum = N * (1 + N) / 2; printf("sum: %d\n", sum); بهینه‌سازی، گاهی اوقات توسط یک کامپایلر بهینه‌سازی انجام می‌شود، این است که یک روش (الگوریتم) را انتخاب کنید که کارایی بیشتری در محاسبات است، در حالی که حفظ همان کارکرد. هم مهم است برای رفع برخی از این تکنیک‌ها، کارایی الگوریتمی را
رفع برخی از این تکنیک‌ها، کارایی الگوریتمی را مشاهده می‌کنید. با این حال، بهبود قابل توجهی در عملکرد اغلب می‌تواند با حذف قابلیت‌های بیرونی به دست آید. بهینه‌سازی همیشه یک فرایند واضح یا بصری نیست. در مثال بالا، نسخه بهینه شده ممکن است در مقایسه با نسخه اصلی کندتر از نسخه اصلی باشد اگر N به اندازه کافی کوچک باشد و سخت‌افزار خاص در انجام عملیات علاوه بر اضافه کردن و حلقه بیش از ضرب و تقسیم، بسیار سریعتر اتفاق می‌افتد. در برخی موارد، با این حال، بهینه‌سازی مبتنی بر استفاده از الگوریتم‌های پیچیده‌تر یا
مبتنی بر استفاده از الگوریتم‌های پیچیده‌تر یا استفاده از «موارد خاص» و «حقه‌های ویژه» و انجام پیچیده تجارت است. برنامه به‌طور کامل بهینه شده ممکن است دشوار باشد و از این رو ممکن است خطاهای بیشتری را نسبت به نسخه‌های غیرمتعارف داشته باشد. بعلاوه، حذف برخی از مشکلات واضح، برخی از بهینه‌سازی‌های سطح کد باعث کاهش قابلیت نگهداری می‌شود. بهینه‌سازی به‌طور کلی بر بهبود تنها یک یا دو جنبه از عملکرد تمرکز می‌کند: زمان اجرا، استفاده از حافظه، فضای دیسک، پهنای باند، مصرف برق یا برخی از منابع دیگر. این معمولاً نیاز به
برق یا برخی از منابع دیگر. این معمولاً نیاز به یک trade-offدارد؛ که در آن یک عامل به هزینه دیگران بهینه‌سازی شده است. به عنوان مثال، افزایش حجم حافظه پنهان باعث بهبود عملکرد در زمان اجرا می‌شود، اما مصرف حافظه نیز افزایش می‌یابد. سایر موارد رایج شامل وضوح و مختصر کد است. مواردی وجود دارد که برنامه‌نویس بهینه سا باید تصمیم بگیرد که نرم‌افزار را برای برخی عملیات بهتر کند، اما هزینه عملیات دیگر کمتر کارآمد است. این ترکیبات ممکن است گاهی غیر فنی باشد مانند زمانی که یک رقیب نتیجه یک معیار را منتشر کرده است که
که یک رقیب نتیجه یک معیار را منتشر کرده است که باید به منظور بهبود موفقیت تجاری مورد ضرب و شتم قرار گیرد، اما احتمالاً با استفاده از نرمال بودن نرم‌افزار کمتر کارآمد می‌شود. چنین تغییراتی گاهی اوقات به شوخی به عنوان "pessimizations" اشاره شده است. تنگنا. بهینه‌سازی ممکن است شامل یافتن یک تنگنا در یک سیستم باشد - یک جزء که عامل محدودکننده در عملکرد است. از لحاظ کد، این اغلب یک نقطه داغ است - قسمت بحرانی کد که مصرف‌کننده اولیه منابع مورد نیاز است - هرچند که این می‌تواند عامل دیگری مانند زمان تأخیر I / O یا
این می‌تواند عامل دیگری مانند زمان تأخیر I / O یا پهنای باند شبکه باشد. در علم کامپیوتر، مصرف منابع اغلب به نوعی توزیع قانون قدرت پیوسته است و اصل پارتو را می‌توان به بهینه‌سازی منابع با توجه به اینکه ۸۰٪ از منابع معمولاً با استفاده از ۲۰٪ از عملیات مورد استفاده قرار می‌گیرد. در مهندسی نرم‌افزار اغلب یک تقریب بهتر است که ۹۰٪ زمان اجرای برنامه کامپیوتری صرف ۱۰٪ از کد انجام می‌شود (قانون ۹۰/۱۰ در این زمینه شناخته می‌شود). الگوریتم پیچیده‌تر و ساختار داده‌ها با بسیاری از اقلام خوب عمل می‌کند، در حالی که
با بسیاری از اقلام خوب عمل می‌کند، در حالی که الگوریتم‌های ساده برای مقادیر کوچک داده‌ها مناسب تر هستند - زمان راه اندازی، زمان شروع و عوامل ثابت الگوریتم پیچیده‌تر می‌تواند مزیت را بیش از حد و در نتیجه الگوریتم ترکیبی یا سازگار الگوریتم ممکن است سریعتر از هر الگوریتم تک باشد. یک پروفیل عملکرد می‌تواند مورد استفاده قرار گیرد تا محدودیت تصمیم‌های مربوط به عملکرد که مطابق با شرایط است. در برخی موارد، اضافه کردن حافظه بیشتر می‌تواند کمک کند که برنامه را سریعتر اجرا کند. به عنوان مثال، یک برنامه فیلتر معمولاً
اجرا کند. به عنوان مثال، یک برنامه فیلتر معمولاً هر خط را مطالعه می‌کند و فوراً آن خط را خروجی می‌کند. این تنها با استفاده از حافظه کافی برای یک خط استفاده می‌کند، اما عملکرد به‌طور معمول ضعیف است، به دلیل تأخیر هر خواندن دیسک. با خواندن کل فایل و سپس نوشتن نتیجه فیلتر شده، می‌توان عملکرد را بسیار بهبود داد، هرچند که از حافظه بسیار بیشتری استفاده می‌کند. ذخیره‌سازی نتایج مشابه نیز مؤثر است، هرچند که نیاز به استفاده از حافظه بزرگتر نیز دارد. وقت بهینه‌سازی. بهینه‌سازی می‌تواند خوانایی را کاهش دهد و کد را
بهینه‌سازی می‌تواند خوانایی را کاهش دهد و کد را اضافه کند که فقط برای بهبود عملکرد استفاده می‌شود. این ممکن است برنامه‌ها یا سیستم‌ها را پیچیده‌تر کند و آن‌ها را برای حفظ و اشکال زدایی سخت‌تر کند. در نتیجه، بهینه‌سازی یا تنظیم عملکرد اغلب در پایان مرحله توسعه انجام می‌شود. دونالد نوت دو اظهار نظر در مورد بهینه‌سازی انجام داد: "ما باید در مورد بهره وری کوچک توجه داشته باشیم، حدود ۹۷٪ زمان می‌گویند: بهینه سازی زود هنگام ریشه همه شر است. با این حال ما نباید فرصت‌هایمان را در این ۳٪ بحرانی گذراندیم " «در
فرصت‌هایمان را در این ۳٪ بحرانی گذراندیم " «در رشته‌های مهندسی تأسیس شده، بهبود ۱۲٪، به راحتی به دست آمده، هرگز به عنوان حاشیه ای به حساب نمی‌آید و من معتقدم که همان دیدگاه باید در مهندسی نرم‌افزار غلبه کند» «بهینه‌سازی زود هنگام» یک عبارت است که برای توصیف وضعیتی که یک برنامه‌نویس اجازه می‌دهد ملاحظات عملکرد به طراحی یک قطعه کد برسد. این می‌تواند در نتیجه یک طراحی باشد که به اندازه کافی نبوده یا کدی باشد که نادرست است، زیرا کد با بهینه‌سازی پیچیده شده است و برنامه نویسان با بهینه‌سازی آن را پرت می‌کنند.
و برنامه نویسان با بهینه‌سازی آن را پرت می‌کنند. در هنگام تصمیم‌گیری در مورد اینکه آیا برای بهینه‌سازی بخش خاصی از برنامه، قانون قانون آمدال همیشه باید مورد توجه قرار گیرد: تأثیر بر برنامه کلی بسیار بستگی دارد به اینکه چقدر زمان واقعی در بخش خاصی صرف می‌شود، که همیشه از نگاه کردن به کد مشخص نیست بدون تجزیه و تحلیل عملکرد یک روش بهتر این است که ابتدا کد را از طرح طراحی و سپس کد / کد نمایشی / معیار را ببینید تا ببینیم کدام قسمت باید بهینه شود. طراحی ساده و ظریف اغلب در این مرحله آسان‌تر می‌شود و پروفایل
و ظریف اغلب در این مرحله آسان‌تر می‌شود و پروفایل می‌تواند مشکلات عملکرد غیرمنتظره ای را نشان دهد که با بهینه‌سازی زود هنگام مواجه نخواهد شد. در عمل، اغلب لازم است که در هنگام طراحی نرم‌افزار ابتدا اهداف عملکرد را ذکر کنید، اما برنامه‌نویس اهداف طراحی و بهینه‌سازی را متعادل می‌کند. کامپایلرهای مدرن و سیستم عامل بسیار کارآمد هستند، زیرا عملکرد در نظر گرفته شده اغلب با شکست مواجه می‌شود. به عنوان مثال، داده‌های ذخیره شده در سطح برنامه که مجدداً در سطح سیستم عامل ذخیره می‌شوند، در اجرای بهبود نمی‌یابند. با
عامل ذخیره می‌شوند، در اجرای بهبود نمی‌یابند. با این حال، هنگامی که برنامه‌نویس بهینه‌سازی‌های شکست خورده را از کد تولید حذف می‌کند، یک مورد نادر است. درست است پیشرفت‌های سخت‌افزاری اغلب از هیچگونه پیشرفت بالقوه اجتناب ناپذیر است، با این وجود کد پوششی در آینده به مدت طولانی پس از پایان دادن به هدف آن، ادامه خواهد یافت. ماکروها. بهینه‌سازی در طول توسعه کد با استفاده از ماکرو در فرم‌های مختلف در زبان‌های مختلف صورت می‌گیرد. در بعضی از زبان‌های رویه ای، مانند C و C ++، ماکروها با استفاده از جایگزینی نشانه
C و C ++، ماکروها با استفاده از جایگزینی نشانه اجرا می‌شوند. امروزه، توابع درون خطی می‌تواند به عنوان یک جایگزین امن در بسیاری موارد استفاده شود. در هر دو حالت، بدن تابع مجهز می‌تواند به وسیله کامپایلر بهینه‌سازی کامپایل زمان بیشتری را انجام دهد، از جمله تأخیر ثابت، که ممکن است برخی از محاسبات را برای زمان کامپایل حرکت کند. در بسیاری از زبان‌های برنامه‌نویسی کاربردی، ماکروها با استفاده از پارسا زمان جایگزینی درختان تجزیه‌کننده / درخت‌های انتزاعی نحو اجرا می‌شوند که ادعا می‌کند آن‌ها را برای استفاده ایمن تر
که ادعا می‌کند آن‌ها را برای استفاده ایمن تر می‌کند. از آنجایی که در بسیاری از موارد از تفسیر استفاده می‌شود، این یکی از راه‌های اطمینان از این است که چنین محاسباتی تنها در زمان تجزیه انجام می‌شود و گاهی اوقات تنها راه است. لیسپ این سبک از ماکرو را ایجاد کرد و چنین ماکروهای اغلب به نام "ماکرو مانند Lisp" نامیده می‌شود. یک اثر مشابه را می‌توان با استفاده از metaprogramming قالب در C ++ بدست آورد. در هر دو مورد، کار به زمان کامپایل منتقل شده است. تفاوت بین C ماکروها در یک طرف، و Lisp مانند ماکروها و C ++
C ماکروها در یک طرف، و Lisp مانند ماکروها و C ++ برنامه‌نویسی خودآرا در طرف دیگر، آن است که ابزارهای دوم اجازه می‌دهد انجام محاسبات دلخواه در زمان کامپایل / تجزیه زمان، در حالی که گسترش C ماکروها هیچ انجام نمی‌محاسبات، و بر توانایی بهینه‌ساز برای انجام آن متکی است. علاوه بر این، ماکرو C مستقیماً از بازگشت یا تکرار پشتیبانی نمی‌کند، بنابراین تورینگ کامل نیست. با این حال، همان‌طور که با هر بهینه‌سازی، اغلب پیش‌بینی می‌شود که این ابزار تا زمانی که پروژه کامل شود، بیشترین تأثیر را دارد، مشکل است. بهینه‌سازی
شود، بیشترین تأثیر را دارد، مشکل است. بهینه‌سازی خودکار و دستی. "همچنین نگاه کنید به " بهینه‌سازی می‌تواند توسط کامپایلرها یا توسط برنامه نویسان انجام شود. دستاوردها معمولاً برای بهینه‌سازی محلی محدود می‌شوند و برای بهینه‌سازی جهانی بزرگتر است. به‌طور معمول، قوی‌ترین بهینه‌سازی، یافتن یک الگوریتم برتر الگوریتم است. بهینه‌سازی یک سیستم کلی معمولاً توسط برنامه نویسان انجام می‌شود، زیرا برای بهینه سازان خودکار بسیار پیچیده است. در این وضعیت، برنامه نویسان یا مدیران سیستم به صراحت کد را تغییر می‌دهند تا سیستم
سیستم به صراحت کد را تغییر می‌دهند تا سیستم کلی بهتر عمل کند. اگر چه می‌تواند کارایی بهتر را تولید کند، اما به مراتب گرانتر از بهینه‌سازی خودکار است. از آنجایی که پارامترهای بسیاری بر عملکرد برنامه تأثیر می‌گذارند، فضای بهینه‌سازی برنامه بزرگ است. فراشناخت و یادگیری ماشین برای رفع پیچیدگی بهینه‌سازی برنامه استفاده می‌شود. از بخش پروفایل (یا آنالیز کننده عملکرد) برای پیدا کردن بخش‌هایی از برنامه استفاده می‌کنید که بیشترین منابع را می‌گیرند - "تنگنا" گاهی اوقات برنامه‌نویسان معتقدند که ایده ای روشن از جایی
برنامه‌نویسان معتقدند که ایده ای روشن از جایی که تنگنا است، اما شهود اغلب اشتباه است. بهینه‌سازی قطعه ای غیر مهم از کد به‌طور معمول برای انجام کار کلی کمک نمی‌کند. هنگامی که تنگنا محلی سازی می‌شود، بهینه‌سازی معمولاً با بازخوانی الگوریتم مورد استفاده در برنامه آغاز می‌شود. اغلب اوقات الگوریتم خاصی می‌تواند به‌طور خاص برای یک مشکل خاص طراحی شده و کارایی بهتر از یک الگوریتم ژنریک را فراهم کند. برای مثال، کار مرتب‌سازی لیست عظیمی از اقلام معمولاً با یک روش مرتب‌سازی سریع انجام می‌شود که یکی از کارآمدترین
مرتب‌سازی سریع انجام می‌شود که یکی از کارآمدترین الگوریتم‌های عمومی است. اما اگر برخی از ویژگی‌های مورد استفاده قابل بهره‌برداری باشد (به عنوان مثال، آن‌ها قبلاً در یک نظم خاص مرتب شده‌اند)، روش دیگری می‌تواند مورد استفاده قرار گیرد یا حتی یک مرتب‌سازی مرتب‌سازی سفارشی. پس از اینکه برنامه‌نویس متوجه شد که بهترین الگوریتم انتخاب شده است، بهینه‌سازی کد می‌تواند شروع شود. حلقه‌ها می‌توانند به صورت غیرمجاز (برای سربار حلقه پایین‌تر، اگر چه اغلب می‌تواند به سرعت "پایین‌تر در" صورتی که بیش از حد حافظه نهان
سرعت "پایین‌تر در" صورتی که بیش از حد حافظه نهان سی‌پی‌یو)، نوع داده‌ها به عنوان کوچک ممکن است می‌تواند استفاده شود، ریاضی عدد صحیح می‌تواند به جای نقطه شناور استفاده شود، و غیره. (نگاه کنید به مقاله کارایی الگوریتمی برای این و سایر تکنیک‌ها) تنگناهای عملکرد می‌تواند به دلیل محدودیت‌های زبان به جای الگوریتم‌ها یا ساختارهای داده مورد استفاده در برنامه باشد. گاهی اوقات یک بخش مهم از برنامه را می‌توان دوباره در یک زبان برنامه‌نویسی متفاوت نوشت که دسترسی مستقیم به دستگاه پایه را فراهم می‌کند. برای مثال، برای
به دستگاه پایه را فراهم می‌کند. برای مثال، برای زبان‌های بسیار سطح مانند پایتون معمول است که ماژول‌هایی که در C نوشته شده‌اند برای سرعت بیشتر باشد. برنامه‌هایی که قبلاً در C نوشته شده‌اند می‌توانند ماژول‌هایی را که در مجمع نوشته شده‌اند داشته باشند. برنامه‌های نوشته شده در دی می‌توانند از مونتاژ خطی استفاده کنند. بخش‌های بازنویسی "پرداخت می‌شود" در این شرایط به دلیل یک قاعده کلی "شناخته شده به عنوان قانون ۹۰/۱۰، که می‌گوید ۹۰ درصد از زمان در ۱۰٪ از کد صرف، و تنها ۱۰٪ از زمان در ۹۰٪ باقی مانده از کد؛
صرف، و تنها ۱۰٪ از زمان در ۹۰٪ باقی مانده از کد؛ بنابراین، تلاش فکری برای بهینه‌سازی فقط بخش کوچکی از برنامه می‌تواند تأثیر بزرگی بر سرعت کلی داشته باشد - اگر قسمت درست(ها) قابل نصب باشد. بهینه‌سازی دستی گاهی اوقات عواقبی ناشی از خواندن را مختل می‌کند؛ بنابراین بهینه‌سازی کد باید با دقت مستندسازی شود (ترجیحا با استفاده از نظرات درون خطی)، و تأثیر آنها بر پیشرفت آینده مورد ارزیابی قرار می‌گیرد. برنامه ای که بهینه‌سازی خودکار را انجام می‌دهد بهینه‌سازی شده است. اکثر بهینه‌سازها در کامپایلرها جاسازی شده و در
اکثر بهینه‌سازها در کامپایلرها جاسازی شده و در طول تدوین کار می‌کنند. بهینه سازان اغلب می‌توانند کد تولید شده را به پردازنده‌های خاصی متصل کنند. امروزه بهینه‌سازی خودکار تقریباً به‌طور انحصاری به بهینه‌سازی کامپایلر محدود می شود. با این حال، به دلیل اینکه بهینه‌سازی کامپایلر معمولاً به یک مجموعه ثابت و بهینه‌سازی به‌طور کلی محدود می‌شود، تقاضای قابل توجهی برای بهینه سازان وجود دارد که می‌توانند توصیف‌های مربوط به بهینه‌سازی‌های مربوط به مشکل و زبان را بپذیرند و به مهندس اجازه می‌دهد تا بهینه‌سازی‌های
بپذیرند و به مهندس اجازه می‌دهد تا بهینه‌سازی‌های سفارشی را مشخص کنند. ابزارهایی که توصیف‌های بهینه‌سازی را می‌پذیرند، سیستم‌های تبدیل سیستم نامیده می‌شوند و شروع به استفاده از سیستم‌های واقعی نرم‌افزار مانند C ++ می‌شوند. برخی از زبان‌های سطح بالا (ایفل، استرل) برنامه‌های خود را با استفاده از زبان متوسط بهینه‌سازی می‌کنند. محاسبات گرید یا محاسبات توزیع شده به منظور بهینه‌سازی کل سیستم، با حرکت دادن وظایف از رایانه‌های با استفاده بالا به رایانه‌ها با زمان بیکاری است. زمان برای بهینه‌سازی. گاهی اوقات، زمان
است. زمان برای بهینه‌سازی. گاهی اوقات، زمان انجام شده برای انجام بهینه‌سازی در خود ممکن است یک مسئله باشد. بهینه‌سازی کد موجود معمولاً ویژگی‌های جدیدی را اضافه نمی‌کند و بدتر از آن ممکن است اشکالات جدیدی در کد قبلی ایجاد شده باشد (همان‌طور که هر تغییر ممکن است). از آنجا که ممکن است کد بهینه‌سازی شده به صورت دستی ممکن است «قابل خواندن» کمتر از کد غیرقطعی باشد، بهینه‌سازی ممکن است باعث حفظ قابلیت نگهداری آن شود. بهینه‌سازی می‌آید در قیمت و مهم است که مطمئن شوید که سرمایه‌گذاری ارزشمند است. بهینه‌سازی خودکار
که سرمایه‌گذاری ارزشمند است. بهینه‌سازی خودکار (یا کامپایلر بهینه‌سازی، برنامه ای که بهینه‌سازی کد را انجام می‌دهد) خود باید بهینه‌سازی شده باشد، یا به منظور بهبود کارایی برنامه‌های هدف خود یا افزایش سرعت عملیات خود. یک کامپایل انجام شده با بهینه‌سازی «روشن» معمولاً طول می‌کشد طول می‌کشد، اگر چه این معمولاً تنها مشکل زمانی که برنامه‌ها بسیار بزرگ است. به‌طور خاص، برای کامپایلرهای فقط در زمان، اجزای اجزای کامپایل زمان اجرای اجرا، همراه با کد هدف خود، کلید بهبود سرعت اجرای کلی است.
موزه ملی هنر زنان یک موزه خصوصی و غیرانتفاعی در آمریکا است که در سال ۱۹۸۱ در واشینگتن دی سی توسط والس و ولمینا کول هالدی تشکیل شد. موزه ملی هنر زنان عمده‌ترین موزه در جهان است که فقط به دستاوردهای هنری زنان در زمینه هنرهای بصری، نمایشی و ادبی پرداخته‌است. در پنج سال نخست این موزه آثار زنان هنرمند را به‌طور موقت در محوطه قصر مسکونی هالدی به نمایش گذاشت. این موزه از سال ۱۹۸۷ که برای اولین بار درهای خود را برای بازدید عموم باز کرد، بیش از ۴۵۰۰ اثر نقاشی، مجسمه، هنر تزیینی را جمع‌آوری کرده‌است. از جمله آثار
هنر تزیینی را جمع‌آوری کرده‌است. از جمله آثار هنرمندانی مانند مری کسات، فریدا کالو، و لوئیز الیزابت ویژه لوبرن در آن قرار دارند. موزه ملی هنر زنان در ۹ ژانویه ۲۰۱۵ برای موفقیت در به انجام رساندن مأموریت خود جایزه سیمون دو بووار را نصیب خود کرد.
باشگاه فوتبال استقلال تهران در فصل ۷۵–۱۳۷۴ پنجاهمین فصل حضور باشگاه فوتبال استقلال تهران در مسابقات فوتبال در ایران بود. استقلال در این فصل در پنجمین دوره جام آزادگان، جام آزادگان ۱۳۷۴ شرکت کرد و در نهایت عنوان سومی این جام را از آن خود کرد. استقلال همچنین در جام حذفی ۷۵–۱۳۷۴ که دهمین دوره جام حذفی فوتبال ایران بود نیز شرکت کرد و در پایان موفق شد عنوان قهرمانی این مسابقات را از آن خود کند تا برای دومین بار قهرمان جام حذفی ایران شود. پیش‌زمینه. استقلال فصل قبل را با مقام دومی در جام آزادگان ۱۳۷۳ به پایان
قبل را با مقام دومی در جام آزادگان ۱۳۷۳ به پایان برده بود. دیدار جنجالی نیمه‌نهایی آن جام بین استقلال و پرسپولیس با محرومیت امیر قلعه‌نویی، صادق ورمزیار، محمود فکری و مسعود غفوری‌اصل به مدت شش ماه همراه بود و این امر باعث شد تا تیم هفته‌های ابتدایی فصل را بدون آن بازیکنان شروع کند. تنها خرید مهم استقلال در این فصل علی‌رضا منصوریان بازیکن جوان تیم پارس‌خودرو بود که در نهایت عنوان بهترین بازیکن جام آزادگان ۱۳۷۴ را نیز از آن خود کرد. مرور فصل. استقلال که فصل را با نصرالله عبداللهی به عنوان سرمربی شروع کرده
را با نصرالله عبداللهی به عنوان سرمربی شروع کرده بود پس از استعفای وی از مقام خود در هفته نخست هفته دوم را حمید ملک‌احمدی، دروازه‌بان سابقش به عنوان مربی موقت به پایان رساند و از هفته سوم منصور پورحیدری را به عنوان سرمربی برگزید تا پدر استقلال بعد از سه فصل دوری از این تیم مجدداً بر روی نیمکت استقلال بنشیند. استقلال در بازی‌های لیگ نتایج پرنوسانی داشت و تمام تیم‌های مدعی و بالای جدول را برد اما در مقابل تیم‌های پایین جدولی امتیازات فراوانی از دست تا در نهایت به عنوان سومی بسنده کند. در ادامه کار و بعد از
به عنوان سومی بسنده کند. در ادامه کار و بعد از پایان لیگ استقلال در جام حذفی شرکت کرد و در این جام موفق ظاهر شد و در نهایت عنوان قهرمانی این جام را از آن خود کرد. دیدار نهایی این جام به دلیل زیر کشت رفتن زمین چمن ورزشگاه آزادی با تأخیر فراوان و در تیر ماه ۱۳۷۵ برگزار شد. در یازدهمین دوره مسابقات جشنواره هفته بسیج تیم امید استقلال به اضافه چند تن از بازیکنان بزرگسال شرکت کرد که در دیدار فینال این بازیها در ضربات پنالتی مغلوب تیم پیروزی شد و در جایگاه دوم قرار گرفت. پیش‌فصل و نیم‌فصل. استقلال در ۱۸ مهر ۱۳۷۴
گرفت. پیش‌فصل و نیم‌فصل. استقلال در ۱۸ مهر ۱۳۷۴ یک بازی دوستانه با تیم ملی فوتبال سنگاپور به مناسبت خداحافظی شاهین بیانی کاپیتان سابق‌اش برگزار کرد. این بازی در ورزشگاه آزادی برگزار شد و با پیروزی ۲–۱ استقلال به پایان رسید. بازی‌ها. جام نقش جهان اصفهان. منبع تیم استقلال در این سال در دومین دوره جام نقش جهان اصفهان شرکت کرد و با تیم‌های کشاورز تهران، سپاهان اصفهان و تیم ملی امید ایران (المپیک ایران) هم‌گروه شد که پس از یک برد، یک شکست و یک تساوی به خاطر تفاضل گل کمتر موفق به صعود به دور بعدی این جام نشد.
گل کمتر موفق به صعود به دور بعدی این جام نشد. جام آزادگان. منبع جام حذفی. منبع جشنواره هفته بسیج. شاکله اصلی استقلال در این بازیها را تیم امید تشکیل داده بود و چند تن از بازیکنان بزرگسال نیز در بازیها به میدان رفتند. آمار فصل. عملکرد مربیان. هدایت استقلال در دو بازی اول لیگ به ترتیب بر عهده نصرالله عبداللهی و حمید ملک‌احمدی بود و از هفته سوم و در بقیه بازی‌های لیگ و جام حذفی تیم را منصور پورحیدری هدایت کرده‌است. در سه بازی جام نقش جهان اصفهان تیم را نصرالله عبداللهی هدایت کرد.
قرارداد فراخوانی در علوم رایانه، یک طرح سطح پیاده‌سازی (یعنی سطح پایین) برای تعیین آنکه زیرروال‌ها چگونه پارامترها را از فراخوان کننده دریافت می‌کنند و نیز چگونه یک نتیجه را بازمی‌گردانند، است. این تفاوت‌های پیاده‌سازی شامل انواع قرارگیری محل پارامتر، مقادیر بازگشتی، آدرس‌های بازگشتی، و پیوند دامنه (مثلا در ثبات، پشته، یا حافظه و غیره) می‌شود، همچنین شامل اینکه چگونه فعالیت‌های آماده‌شدن برای یک فراخوانی با تابع، و بازیابی محیط پس از آن، بین فراخواننده و فراخوان شده تقسیم بشود، است. قراردادهای فراخوانی ممکن
شده تقسیم بشود، است. قراردادهای فراخوانی ممکن است به یک استراتژی ارزیابی زبان برنامه‌نویسی خاص مربوط باشند، اما اغلب آن‌ها بخشی از آن (یا برعکس) نیستند، زیرا استراتژی ارزیابی معمولاً در سطح انتزاعی تری (بالاتری) تعریف شده‌است و به عنوان بخشی از زبان دیده می‌شود به جای جزئیات پیاده‌سازی (سطح پایین) یک زبان خاص کامپایلر. تغییرات. قراردادهای فراخوانی ممکن است در موارد زیر متفاوت باشند: در برخی موارد، تفاوت‌ها زیر نیز شامل موارد می‌شوند: تنوع کامپایلر. اگر چه "برخی" زبان در واقع ممکن است این تا حدی در مشخص
"برخی" زبان در واقع ممکن است این تا حدی در مشخص زبان برنامه‌نویسی مشخصات (یا در برخی اجرای محوری)، پیاده‌سازی‌های مختلف از جمله زبان (به عنوان مثال مختلف کامپایلر) به‌طور معمول ممکن است هنوز هم استفاده از کنوانسیون‌های مختلف فراخوانی، اغلب انتخاب. دلایل این کار عملکرد، سازگاری مکرر با توافقنامه‌های دیگر زبان‌های محبوب (با توجه به یا بدون دلایل فنی)، و محدودیت‌ها یا قراردادهای اعمال شده توسط «سیستم عامل‌های مختلف» (ترکیبی از معماری CPU و سیستم عامل) است. تنوع معماری. معماری‌های CPU همیشه دارای بیش از یک
تنوع معماری. معماری‌های CPU همیشه دارای بیش از یک قرارداد فراخوانی ممکن هستند. با تعداد زیادی از ثبات‌های کلی و سایر ویژگی‌ها، پتانسیل چند قرارداد فراخوانی زیاد است، اگر چه برخی معماری به‌طور رسمی مشخص شده‌است که فقط از یک قرارداد فراخوانی استفاده کند که توسط معمار ارائه شده‌است. x86 (32 بیتی). معماری x86 از قراردادهای فراخوانی مختلفی استفاده می‌کند. با توجه به کم بودن ثبات‌ها، قراردادهای فراخوانی x86 اغلب آرگومان را در پشته منتقل می‌کنند، در حالی که مقدار بازگشتی (یا اشاره گر به آن) در یک ثبات منتقل
بازگشتی (یا اشاره گر به آن) در یک ثبات منتقل می‌شود. برخی از قراردادها از ثبات‌ها برای چند پارامتر اول استفاده می‌کنند که ممکن است باعث بهبود عملکرد و سریعتر شدن برای زیرروال - برگ (یعنی روال‌هایی که با روشی دیگر فراخوانی نشده و نیازی به بازنگری ندارند) که مکرراً استفاده می‌شود شود. مثال فراخوانی: push EAX ; pass some register result push byte[EBP+20] ; pass some memory variable (FASM/TASM syntax) push 3 ; pass some constant call calc ; the returned result is now in EAX ساختار callee معمولی: ("برخی یا همه
is now in EAX ساختار callee معمولی: ("برخی یا همه (به جز ret) دستورالعمل‌های زیر ممکن است در روش‌های ساده بهینه‌سازی شوند") calc: push EBP ; save old frame pointer mov EBP,ESP ; get new frame pointer sub ESP,localsize ; reserve place for locals . ; perform calculations, leave result in EAX mov ESP,EBP ; free space for locals pop EBP ; restore old frame pointer ret paramsize ; free parameter space and return PowerPC. معماری PowerPC دارای تعداد زیادی از ثبات‌ها است، بنابراین اکثر توابع می‌توانند تمام