Что такое параметр "optimize" в определении сборки файла vproj?
У меня есть файл vproj, который я открыл в блокноте,
Какова работа optimize
параметр здесь, какая разница между True
а также False
?
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<DefineDebug>false</DefineDebug>
<DefineTrace>true</DefineTrace>
<Optimize>true</Optimize> <!-- Here -->
1 ответ
Без оптимизации компилятор создает очень тупой код - каждая команда компилируется очень простым способом, так что она выполняет предназначенную задачу. По умолчанию в сборках Debug оптимизации отключены, поскольку без оптимизаций созданный исполняемый файл напрямую соответствует исходному коду.
Переменные хранятся в регистрах
Как только вы включите оптимизацию, компилятор применяет множество различных методов, чтобы сделать код более быстрым, в то же время делая то же самое. Наиболее очевидное различие между оптимизированными и неоптимизированными сборками в Visual C++ заключается в том, что значения переменных хранятся в регистрах как можно дольше в оптимизированных сборках, а без оптимизации они всегда сохраняются в памяти. Это влияет не только на скорость кода, но и на отладку. В результате этой оптимизации отладчик не может надежно получить значение переменной, когда вы шагаете по коду.
Вот мой источник - Что действительно делает опция "Оптимизировать код" в Visual Studio?