Издательский дом ООО "Гейм Лэнд"СПЕЦВЫПУСК ЖУРНАЛА ХАКЕР #63, ФЕВРАЛЬ 2006 г.

нитрооктан для толстой птицы

J1M (J1M@LIST.RU)

Спецвыпуск: Хакер, номер #063, стр. 063-054-5


Как и любая другая консольная программа, GCC настраивается через опции командной строки. Рассмотрим некоторые из них:

-O — базовая оптимизация. Заметно поднимает скорость исполнения программы (вплоть до повышения в два раза).

-O2 — стандартный уровень оптимизации. Несущественно увеличивает как размер бинарника, так и скорость исполнения (по сравнению с –O).

-O3 — оптимизация уровня -O2 плюс некоторые ухищрения в виде флагов -finline-functions и -frename-registers. Опять же, в отличие от предыдущего флага, не приводит к заметному повышению скорости. Но размер увеличивается :). Некоторые программы не могут быть скомпилированы с этим флагом.

-Os — опять же -O2 в совокупности с флагами, уменьшающими размер.

Вместе с одним из перечисленных флагов можно указать еще и следующие:

-fomit-frame-pointer — может очень благотворно повлиять на скорость исполнения программы. Указав этот флаг, мы говорим компилятору, чтобы он не сохранял указатель на кадр стека. Так мы избегаем временных затрат на его сохранение и восстановление.

-mcpu=семейство_процессоров (-mtune в GCC >= 3.4) — оптимизация для конкретного процессора с использованием инструкций не выше i386. Позволяет запускать программу на древних процессорах.

-march=семейство_процессоров — оптимизация для процессора с использованием инструкции этого процессора. Приводит к автоматическому включению опции -mcpu и невозможности исполнения на «процессорах-предшественниках».

Значение -mcpu и -march могут быть одним из следующих: i386, i486, i586, i686, pentium, pentium-mmx, pentiumpro, pentium2, pentium3, pentium-m, pentium4, prescott, k6, k6-2, k6-3, k8, athlon, athlon-tbird, athlon-xp, athlon-mp. Полный список можно посмотреть на этой страничке: gcc.gnu.org/onlinedocs/gcc/i386-and-x86_002d64-Options.html.

Еще я порекомендовал бы использовать флаг –pipe — компилятор вместо создания временных файлов будет передавать результат работы одного компонента компилятора напрямую другому. В результате время компиляции снижается, а нагрузка на систему увеличивается.

И наконец, чтобы наши опции всегда передавались GCC, пропишем их в глобальной переменной CFLAGS. Откроем файл /etc/profile и пропишем следующую строку (естественно, со своими опциями):

export CFLAGS='-O2 -march=athlon-tbird -fomit-frame-pointer'

полетаем на ядре

Наши руки таки добрались до святая святых, краеугольного камня любой Linux-системы — ядра. Мы займемся компиляцией ядра, но не для того, чтобы за счет оптимизации получить быструю систему, а чтобы включить некоторые опции, подгоняющие ядро под домашнюю машину.

Итак, переходим в каталог /usr/src/linux и набираем «make menuconfig» (xconfig, gconfig — кому что нравится). Думаю, тебе не нужно напоминать о том, что в ядре не должно быть ничего лишнего. Ближе к делу! Все нужные нам опции находятся в секции Processor type and features. В первую очередь выбираем правильное семейство процессоров в опции Processor family, затем в опции Preemption Model обязательно ставим галочку напротив Preemptible Kernel (Low-Latency Desktop).

Назад на стр. 063-054-4  Содержание  Вперед на стр. 063-054-6