Оптимизация сборки в Gentoo (make.conf)
Оптимизация сборки - одна из основных прелестей Gentoo, однако все описанное применимо к любому случаю компиляции ПО из исходных кодов. Все параметры сборки в Gentoo задаются в файле make.conf.
По сути нас интересует лишь переменная CFLAGS. CXXFLAGS должна быть равна CXXFLAGS="${CFLAGS}", а в MAKEOPTS лишь указывается число параллельно запускаемых процессов компиляции (обычно задают общее число ядер процессоров + 1).
Значение по умолчанию "-O2 -pipe". Параметр -O указывает на используемый уровень оптимизации. Второй уровень считается наиболее высоким безопасным, с третьим уровнем зачастую проявляется нестабильность работы. Параметр -pipe указывает gcc использовать каналы в памяти вместо временных файлов для обмена данными между разными стадиями компиляции. С значением по умолчанию бинарные файлы собираются под архитектуру generic, работают на различных моделях процессоров, но не используют преимущества той или иной модели.
Посмотреть безопасные наборы флагов оптимизаций для различных типов процессоров можно тут: http://en.gentoo-wiki.com/wiki/Safe_Cflags. Бинарники, собранные с указанными там флагами, должны без проблем работать на соответствующем процессоре и при этом использовать большую часть его преимуществ.
В gcc, начиная с версии 4.2, появился флаг -march=native. С этим флагом gcc автоматически определяет тип процессора, поддерживаемые возможности и использует их.
В общем случае для оптимизации нужно сделать следующее:
- определить, что умеет ваш процессор: cat /proc/cpuinfo, обратить внимание на строку flags, в частности на mmx*, 3dnow*, sse*, cx*;
- посмотреть, что будет использовать gcc с -march=native: gcc -march=native -O2 -Q --help=target -fverbose-asm;
- прописать в make.conf -march=native и, возможно, еще некоторые -m*, не включаемые автоматически;
- если ваш процессор поддерживает sse и, если у флага -mfpmath= не указано никакого значения, то пропишите в make.conf -mfpmath=sse;
- посмотреть, какие оптимизации использует gcc: gcc -march=native -O2 -Q --help=optimizers -fverbose-asm;
- если gcc не использует какие-либо оптимизации, включить их в make.conf. Включение некоторых оптимизаций может привести к неработоспособности бинарников, так что здесь стоит обратить внимание только на опцию -fomit-frame-pointer, ее включение безопасно, если вы не собираетесь заниматься отладкой.
В итоге, посмотрите, какие параметры будет использовать gcc с вашими оптимизациями:
gcc <your_options> -Q --help=target -fverbose-asm
gcc <your_options> -Q --help=optimizers -fverbose-asm
Без использования флага -fverbose-asm gcc показывает неверные данные. Это обсуждается тут: http://www.gentoo.ru/node/14818.
А этот скрипт покажет, что попадет в командную строку компилятора: gcc <your_options> -E -v - </dev/null 2>&1 | sed -n 's/.* -v - //p'. Интерес представляет, пожалуй, только для разработчиков, но для полноты изложения привожу его здесь.
2 комментариев
Комментарий от: Mocassins Femme Pas Cher
Listed below are just some of the examples on the uses of a moleskine for sale. She can position her legs to lift her up to create some variation with the fgjhkhijhjhj position and work her legs and butt muscles as well,Mocassins Femme Pas Cher. The sunken ship was identified as an allied freighter sailing alone but still no word from Rio Grande. If you register with a site that is especially for engineering jobs, then you will see that there are a great number of job vacancies in that field of
Идет загрузка формы...
Комментарий от: Mocassins Femme Pas Cher
Instinctively, that individual would now perceive you as being unkempt and lazy. Patrick’s Day and Fat Tuesday,Mocassins Ferrari Femme, Cinco de Mayo is one of those onlines that lends any and all, regardless of ethnic background, a chance to eat,Tods Gommino, imbibe, and enjoy the free shipping of the outlet we love to spend time with. Then you can take the card to anywhere and print them, even Costco. The key feate of sch shits is the emboidey and decoative wok down the coa o even aong the shi