Флажок “Optimize code” в Visual Studio. Что точно это делает?

Как уже отмечено, обычно, будет один заголовок (.h) файл для каждого источника (.c или .cpp) файл.

Однако необходимо посмотреть на когезионную способность файлов. Если различные исходные файлы обеспечивают отдельные, индивидуально допускающие повторное использование наборы функций - идеальная организация - тогда у Вас должен, конечно, быть один заголовок на файл. Если, однако, эти три исходных файла обеспечивают составной набор функций (который является слишком большим для вписывания в один файл), то Вы использовали бы более сложную организацию. Был бы один заголовок для внешних сервисов, используемых основной программой - и это будет использоваться другими программами, бывшими нужными в тех же сервисах. Также был бы второй заголовок, используемый сотрудничающими исходными файлами, который предоставляет 'внутренние' определения, совместно использованные теми файлами.

(Также отмеченный Миром): для основной программы не обычно нужен ее собственный заголовок - никакой другой исходный код не должен использовать услуги, которые это предоставляет; это использует услуги, предоставленные другими файлами.

19
задан erbridge 7 August 2014 в 23:01
поделиться

3 ответа

  1. Вы бы не захотели, чтобы это было включено для отладки, поскольку это затрудняет пошаговое выполнение кода, так как фактический выполняемый код может не отражать то, что вы написали (поскольку некоторые строки будут оптимизировано)

  2. Он не включен по умолчанию для сборок DEBUG по вышеуказанной причине, он должен быть включен по умолчанию в сборках выпуска

  3. Он выполняет такие оптимизации, как динамическое встраивание и удаление ненужных локальных переменных. Любой вид оптимизации, который можно выбрать во время компиляции.

26
ответ дан 30 November 2019 в 04:08
поделиться

В Википедии есть статья о оптимизации компилятора , которая охватывает многие из основных типов оптимизации.

Вы не хотите создавать оптимизированные отладочные сборки. Оптимизация влияет на отлаживаемость вашего кода - некоторые строки кода могут быть удалены, некоторые строки кода из разных частей функции или из разных функций могут быть объединены вместе, локальные переменные могут быть объединены и так далее. Это означает, что при отладке ваша текущая строка может казаться случайным образом прыгать из-за реорганизации кода, а проверка локальных переменных может вводить в заблуждение - пространство для локальных переменных может быть повторно использовано, когда оно больше не нужно, и, по-видимому, дает бессмысленный результат.

3
ответ дан 30 November 2019 в 04:08
поделиться

Посмотрите ответы на Для чего предназначен ключ компилятора / optimize C #? Они отвечают на ваши вопросы (особенно ответ Нолдорина).

1
ответ дан 30 November 2019 в 04:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: