Оптимизация для специфического типа процессора
Для GCC версий 2.x существует две основные опции оптимизации, которые основаны на специфическом типе процессора. Это указано в
руководстве по GCC:
-mno-486 | - | оптимизация для 80386. |
-m486 | - | оптимизация для 80486. Однако, такая программа сможет выполняться на процессоре 80386. |
Следует заметить, что в настоящий момент для GCC версий 2.x, нет опций поддержки новых типов процессоров фирмы Intel (Pentium и более новые).
Однако предполагается, что будущие версии GNAT, которые будут собраны с использованием GCC версий 3.x и более новыми версиями GCC, возможно, будут полноценно поддерживать следующие опции:
-mpentium | - | оптимизация для Pentium / Intel 586. |
-mcpu=i686 | - | оптимизация для Pentium II/ Intel 686. |
-mcpu=k6 | - | оптимизация для AMD K6. |
Для GCC 2.8.1, который используется совместно с GNAT, рекомендуется следующая комбинация опций компилятора для получения разумного выигрыша в производительности при использовании процессора Pentium:
-m486 -malign-loops=2 -malign-jumps=2 -malign-functions=2 -fno-strength-reduce |
Существуют также другие опции, которые могут быть полезны или бесполезны, в зависимости от конкретной программы.
Для получения более полной информации следует обратиться к gcc FAQ.
Рассмотрим совместное использование этих опций.
Предположим, что необходимо разработать программу которая будет выполняться на процессоре Intel Pentium, и скорость выполнения программы имеет существенное значение.
В процессе разработки программы, можно использовать утилиту gnatmake с опцией -O1.
Такая установка будет подавлять предупреждающие сообщения об использовании директив оптимизации в исходном тексте.
После завершения разработки, для выполнения заключительной сборки проекта, можно использовать следующую комбинацию опций для утилиты gnatmake:
-m486 -O3 -malign-loops=2 -malign-jumps=2 -malign-functions=2 -fno-strength-reduce -gnatp |
В результате, это позволяет обеспечить максимальную производительность при выполнении программы на процессоре Intel Pentium.
Copyright (C) А.Гавва | V-0.4w май 2004 |