در نظریه کامپایلر، شاخه ای از علوم کامپیوتر نظری، حذف کد مرده (به انگلیسی: Dead code elimination) نوعی از بهینه سازی کامپایلر (به انگلیسی: Compiler optimization) است، که برای حذف بخشی از کد، که در نتیجهٔ برنامه تأثیری ندارد، استفاده می شود. کد مرده شامل بخشی از کد است که هیچ گاه اجرا نمی شود و یا در صورت اجرا، خروجی آن مورد استفاده قرار نگرفته و در واقع فقط بر روی متغیرهای مرده (متغیرهایی که در بقیه بخش های برنامه خوانده نمی شوند و از آن ها استفاده ای نمی شود) تأثیر می گذارد. به طور معمول، کامپایلرها در زمان کامپایل برنامه، به صورت بازگشتی تعیین می کنند که کدام متغیرها و بخش های برنامه استفاده شده اند. متغیرها و بخش های استفاده شده علامت گذاری می شوند و در نهایت بخش های علامت نخورده، از برنامه حذف می شوند. اکثر کامپایلرهای پیشرفته، گزینه های متعددی را در سطوح مختلف برای حذف کد مرده در اختیار قرار می دهند. در سطوح پایین، کامپایلر فقط بخش هایی از کد که اجرای آن های غیرممکن است را حذف می کند. در سطوح بالاتر کامپایلر فضایی را برای ذخیره سازی متغیرهای بی استفاده در نظر نمی گیرد. در سطوح بالاتر از آن نیز، کامپایلر دستورها و توابع بی استفاده را شناسایی و حذف می کند.
بهینه سازی کامپایلر
حذف کد مرده مزیت های فراوانی دارد که از جملهٔ آن ها می توان به کم شدن اندازهٔ برنامه اشاره کرد، که بدین ترتیب از اجرا شدن کدی که در نتیجهٔ برنامه تأثیری ندارد و عمل هایی که می توان بدون انجام آن ها به نتیجه رسید، جلوگیری می شود. در نتیجه، مدت زمان اجرای برنامه کاهش می یابد و این موضوع در بسیاری از اوقات، می تواند تأثیر زیادی در بهینه تر شدن برنامه داشته باشد. علاوه بر این، حذف کد مرده باعث ساده تر شدن ساختار برنامه می شود و به این صورت، راه برای انجام دیگر بهینه سازی ها باز می شود.
از طرفی باید در عملیات حذف کد مرده بسیار دقت نمود، چرا که ممکن است نتیجهٔ محاسبات بخشی از کد، در جای دیگری استفاده نشود، ولی آن محاسبات باعث ایجاد تغییر در یک متغیر سراسری و یا تولید استثنا (به انگلیسی: Exception) شود، که در این صورت حذف آن بخش از کد، باعث ایجاد خطا در عملکرد برنامه می شود. به طور معمول، کامپایلرها زمانی که در مورد مرده بودن بخشی از کد ابهام هست، به صورت محافظ کارانه عمل می کنند.
این برنامه که با زبان سی (C) نوشته شده است را در نظر می گیریم.
بهینه سازی کامپایلر
حذف کد مرده مزیت های فراوانی دارد که از جملهٔ آن ها می توان به کم شدن اندازهٔ برنامه اشاره کرد، که بدین ترتیب از اجرا شدن کدی که در نتیجهٔ برنامه تأثیری ندارد و عمل هایی که می توان بدون انجام آن ها به نتیجه رسید، جلوگیری می شود. در نتیجه، مدت زمان اجرای برنامه کاهش می یابد و این موضوع در بسیاری از اوقات، می تواند تأثیر زیادی در بهینه تر شدن برنامه داشته باشد. علاوه بر این، حذف کد مرده باعث ساده تر شدن ساختار برنامه می شود و به این صورت، راه برای انجام دیگر بهینه سازی ها باز می شود.
از طرفی باید در عملیات حذف کد مرده بسیار دقت نمود، چرا که ممکن است نتیجهٔ محاسبات بخشی از کد، در جای دیگری استفاده نشود، ولی آن محاسبات باعث ایجاد تغییر در یک متغیر سراسری و یا تولید استثنا (به انگلیسی: Exception) شود، که در این صورت حذف آن بخش از کد، باعث ایجاد خطا در عملکرد برنامه می شود. به طور معمول، کامپایلرها زمانی که در مورد مرده بودن بخشی از کد ابهام هست، به صورت محافظ کارانه عمل می کنند.
این برنامه که با زبان سی (C) نوشته شده است را در نظر می گیریم.
wiki: حذف کد مرده