нитрооктан для толстой птицы 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). |