![]() | |||||
|
|
Теория: Опции, управляющие работой компилятора F77 и редактора связейОптимизацииОбщие опцииЦ -fast Устанавливает опции, улучшающие время выполнения: -assume oaccuracy_sensitive, -align dcommons, -math_library fast, и -O4. Ц -O0 Отменяет все оптимизации. Ц -O1 Включает локальные оптимизации и экономию общих подвыражений. Граф вызовов определяет порядок компиляции процедур. Ц -O2 Включает глобальную оптимизацию и все -O1 оптимизации, включая перемещение кодов, уменьшение количества и замену проверок, расщепление анализа во время выполнения, планирование кода и подстановку арифметических функций-операторов. Ц -O3 Включает дополнительную глобальную оптимизацию, которая улучшают скорость (ценой размера экстракодов), например: умножение целых и расширение деления (использование сдвигов), развертка цикла, и копирование кодов для устранения ветвей. Также выполняет все оптимизации -O2. Ц -O4 Разрешает подстановку небольших процедур и всех -O3 оптимизации. Тем не менее, если Вы определяете опцию -g, умолчанием является -O0. (Смотри также опции -g2 или -g). Ц -O5 Включает конвейер программ, оптимизации преобразования цикла, и другие оптимизации, включая байт-векторизацию, и вставку дополнительных NOPs (Операций No) для выравнивания последовательностей мульти-передачи. Оптимизации преобразования цикла являются группой оптимизаций, которые относятся к ссылкам на массив в пределах циклов. Эти оптимизации могут улучшить действие системы памяти и могут относиться к повторению шагов цикла. Этот тип оптимизации может также определяться использованием опции -transform_loops. Программный конвейер применяется к командам , планирующим определенные внутренние циклы, допуская "свертку" инструкции в пределах цикла и выполнение на другой итерации цикла. Этим может уменьшиться влияние операций длинного времени ожидания, завершающихся при более быстром выполнении цикла. Этот тип оптимизации может также определяться использованием опции -pipeline. Чтобы определить, какую пользу вашей конкретной программе приносит использование -O5, Вы можете сравнить время выполнения вашей программы и ее же, но компилируемой с -O4. Управление компиляцией вызоваЦ -inline all Каждый вызов, если возможно, реализуется явной подстановкой (по типу макроса). При этом рекурсивный вызов не приводит к зацикливанию во время трансляции. Ц -inline manual Реализует явную подстановку только для функций-операторов. Ц -inline none Подавляет все подстановки программ. ОтладкаЛовля ошибокЦ -check_bounds Генерирует код, включающий динамические проверки в индексных выражениях и подстроках. Об ошибке сообщается, если выражение - за пределами размеров массива или длины строки. Ц -check overflow Генерирует код с проверкой переполнения целого. Ц -check power Проверяет динамические ошибки операции возведения в степень для случаев 0.0**0.0 и <отрицательное значение>**<целое значение типа real > таким образом, что 0.0**0.0 есть 1.0 и (-3.0)**3.0 есть -27.0. При этом вызываются во время выполнения фатальные ошибки для этих случаев. Ц -check underflow Включает контроль потери значимости и выдачу сообщения во время выполнения. При этом результат заменяется нулем 0, если Вы не определяете опцию -fpe3 или -fpe4. ПрофилированиеЦ -p0 Отключает профилирование. Ц -p1 Устанавливает верхнюю границу профилирования путем периодической установки контрольного значения счетчика команд. Эта опция влияет только на загрузку. Когда происходит загрузка, эта опция заменяет стандартную программу запуска программой запуска профиля во время прогона (mcrt0.o) и ищет профилирующую библиотеку уровня 1 (libprof1.a). Когда происходит профилирование, вызовется программа запуска monstartup(3) и производит файл mon.out, который содержит профиль выполнения данных для использования с постпроцессором prof(l). Если Вы определили -p1 или -p, Вы могли бы также определить -g1 или выше. Ц -p Как -p1 Ц -pg Устанавливает профилирование с помощью gprof(1), которая производит вызов графа (graph), показывающего выполнение программы. С этой опцией стандартная программа запуска заменяется программой gcrt0.o, и ld(1) включает вызовы _mcount в каждой точке входа. Программы, связываемые при включении опции -pg при выполнении производят файлы gmon.out и gmon.sum. Файл gmon.out содержит динамический граф вызова (graph) и профилировщик (profile); файл gmon.sum содержит итоговый динамический граф вызова и профилировщика. Чтобы отобразить вывод, выполняется gprof в файле gmon.out. Управление ЛистингомЦ -cross_reference Включает в листинг (если генерируется с -V ) перекрестные ссылки всех символов, использованных в исходной программе, вместе с количеством строк определений и использований. Ц -V Создает файл листинга исходного файла с добавкой различной статической информации. Имя файла листинга - базовое имя исходного файла с расширением .l, заменяющим расширения .f, .for, или .FOR. Как именно создается файл листинга зависит от того, как Вы компилируете исходные файлы. Если Вы компилируете различные исходные файлы вместе, создается один файл листинга (названное базовым именем первого входного файла и с суффиксом .l). Если Вы компилируете исходные файлы поочередно, создается отдельный файл листинга для каждого входного файла (названное базовым именем входного файла с суффиксом .l). Ц -warn nounuse Подавляет предупреждения о неиспользованных переменных . Ц -warn argument_checking Разрешает выдавать предупреждения о несовпадениях аргумента в операторе вызова с параметрами вызываемой процедуры, когда они скомпилированы вместе. |
||||
![]() | Copyright © fortran-online.info, 2007 | ||||