Без оптимізації компілятор видає дуже німий код - кожна команда компілюється дуже просто, так що вона виконує задумане. У збірках налагодження за замовчуванням вимкнено оптимізацію, оскільки без оптимізацій створений виконуваний файл відповідає вихідному коду прямо.
Змінні, що зберігаються в реєстрах
Після того, як ви ввімкнете оптимізацію, компілятор застосовує безліч різних методів, щоб пришвидшити роботу коду, виконуючи все те саме. Найбільш очевидна різниця між оптимізованими та неоптимізованими збірками у Visual C ++ полягає в тому, що значення змінних зберігаються в регістрах якомога довше в оптимізованих збірках, тоді як без оптимізації вони завжди зберігаються в пам'яті. Це впливає не тільки на швидкість коду, але і на налагодження. В результаті цієї оптимізації налагоджувач не може надійно отримати значення змінної під час проходження коду.
Інші оптимізації
Компілятор застосовує кілька інших оптимізацій, як описано в документах MSDN Параметри / O (Оптимізація коду) . Загальний опис різних методів оптимізації див. У статті «Оптимізація компілятора Вікіпедії» .