مثال: برنامه زیر را در نظر بگیرید:
کد معادل اسمبلی:
* همانطور که مشاهده می شود تنها یک کد اسمبل ایجاد شده که اجرای هر بار حلقه آن یک کلاک می برد.
حال برنامه ای که با متغیر unsigned نوشته شده را مشاهده نمایید.
کد معادل اسمبل این برنامه پساز بهینه سازی به صورت زیر است:
* در این برنامه کد اسمبلی به صورت چشمگیری افزایش یافته و مقدار کلاک برای هر بار اجرای حلقه ، for به6 + 2 سیکل رسیده است.
نتیجه: هیچگاه از متغیرهای بدون علامت (unsigned) برای کنترل حلقه for و اندیس گذاری استفاده نکنید.زبان c قوانین محدود تری برای متغیر های علامت دار (signed) دارد و در نتیجه بهینه سازی راحت تر انجام می شود.
در این حلقه اگر زمانی n صفر باشد حلقه هیچ گاه اجرا نمی شود و کامپایلر مجبور است قبل از شروع حلقه یکبار صفر شدن n را چک کند.اکنون اگر راهی وجود داشت که برنامه نویس به کامپایلر اطمینان می دادکه مقدار متغیر n هیچ گاه کمتر از یک نمی شود، کامپایلر با خیال راحت می توانست این چک اضافه را حذف کند.
همچنین کامپایلر اگر بفهمد که محتویات یک حلقه همیشه به تعداد زوج اجرا می شود، می تواند به جای تکرار n بار محتویات حلقه، از محتویات حلقه یک کپی دیگر در کنار مقادیر قبلی ایجاد کند و اکنون این مجموعه را n/2 بار تکرار نماید. به این کار unrole کردن می گویند.و با این روش در بعضی موارد که سریعتری ایجاد می شود.برای انتقال اینگونه اطلاعات به کامپایلردر نرم افزار ccs، یک pragma به نام MUST_ITERATE وجود دارد.