حذف عبارت های مشترک ( انگلیسی:Common subexpression elimination)در نظریه کامپایلر، حذف عبارت های مشترک یک بهینه سازی کامپایلر است که نمونه هایی از عبارت های یکسان را جستجو می کند و تجزیه و تحلیل می کند که آیا جایگزین کردن عبارت ها با یک متغیر نگهدارنده مقدار آن ارزش دارد یا نه.
هر مسیر از شروع برنامه تا نقطه p, ارزیابی b*c قبل از رسیدن به p انجام دهد.
مقادیر b یا c پس از آخرین ارزیابی b*c نباید تغییر کند.
در کد زیر:
;a = b * c + g;d = b * c * eممکن است ارزش داشته باشد که اینطور تغییر دهیم:
؛tmp = b * c;a = tmp + g;d = tmp * eاگر هزینه های ذخیره سازی و بازیابی "tmp" کمتر از هزینه محاسبه "b * c" باشد.
هر مسیر از شروع برنامه تا نقطه p, ارزیابی b*c قبل از رسیدن به p انجام دهد.
مقادیر b یا c پس از آخرین ارزیابی b*c نباید تغییر کند.
در کد زیر:
;a = b * c + g;d = b * c * eممکن است ارزش داشته باشد که اینطور تغییر دهیم:
؛tmp = b * c;a = tmp + g;d = tmp * eاگر هزینه های ذخیره سازی و بازیابی "tmp" کمتر از هزینه محاسبه "b * c" باشد.
wiki: حذف عبارت های مشترک