Обсуждение:HOWTO Использование CFLAGS для оптимизации собранных программ
Материал из Gentoo Linux Wiki
Вот нашел в статье некоторые (на мой взгляд) ошибки.
- export CFLAGS='bla' emerge не проигнорирует. Напротив, если какая-то переменная экспортирована в окружение, то emerge воспримет именно ее, а не переменную из make.conf.
- -march генерирует несовместимый код, а не -mcpu.
Есть еще интересный проект по теме, acovea (анализ быстродействия компиляторов). Есть в портежах. К сожаленью, у меня нет времени с ним разобраться, да и к тому же мой проц не поддерживается (нужен p4 или opteron). Так что, владельцы четвертых пней и оптеронов, если есть время, до разберитесь плз.
--Nickolay 11:29, 6 Янв 2005 (GMT)
А че не исправил?Это ведь вики..должен был исправить как только увидел неточности ;)
GTBe@r
Дык, статья не моя. Думал, посоветоваться сначала. Вдруг я сам ошибаюсь? В общем, принцип Гиппократа помнить иногда нужно :)
--Nickolay 18:04, 6 Янв 2005 (GMT)
Сижу вот, балуюсь... создается такое впечатление что -Os рулит немеряно.
/usr/sbin/proftpd (ну как частный случай программы взял.) До того были флаги -O3 ну и еще какие-то... не помню... размер файла 554596.
Потом побаловался с acovea. она тестирует чисто на скорость. но че-то я сомневаюсь в корректности. ладно, размер файла 605948.
Потом решил поставить -Os. размер файла 466684.
Это получается что используя Os я экономлю почти 100к памяти! А ведь еще не известно что более ускорит мою систему... скорость приложений или экономия памяти. к тому же Os не сильно отличается от O3...
Я вот еще думаю... нужно поставить -ffast-math или и так неплохо? Интуиция подсказывает что сопроцессор используется достаточно малым количеством приложений.
- Dron 13:09, 3 Фев 2005 (GMT)
sed был 109864 стал 71528. Ну еще забыл сказать что -march то само собой ставим.
И еще такая фича. если памяти очень мало (16 мег), то -pipe лучше не ставить! быстрее работает.
Вообще-то, размер бинарника больше влияет на скорость запуска, а не на скорость работы. -Os рекомендуется тем, у кого тормозной или маленький винчестер, ради ускорения времени запуска или экономии места. Когда-то у меня была системка на -Os, тормозило все жутко просто. Конечно, это чисто визуально, бенчмарки делать возможности не было. Так что, может это мои глюки. Но логика указывает на то, что я прав :)
А если винчестер тормозной, то лучше поставить себе Reiser4. Это ускорит покруче чем всякие опции компилятора.
--Nickolay 15:03, 3 Фев 2005 (GMT)
reiser4 а его уже реально использовать? помоему ядрами он еще не поддерживается. Насчет быстродействия системы в целом - это конечно сложно отследить. Но я просто думаю что это палка о двух концах... всмысле чем больше выигрываем в силе, тем больше проигрываем в расстоянии, но есть еще и оборотная сторона... когда система в целом работает... для нее размер программ - параметр критический. чем больше занимают программы в памяти, тем сильнее будем свопится, тем бедленнее будет работа. но и это еще не все. чем больше свободной памяти, тем больше данных можно закешировать, что опять таки не может не сказаться...
Чтобы сравнить - надо взять два абсолютно одинаковых компа, собрать их с разными опциями и сравнивать в паралели. :) может как нибудь под wmvare побалуюсь... пока могу сравнить только отдельное приложение. щас сравню.
--Dron 09:31, 4 Фев 2005 (GMT)
reiser4 есть пока только в mm-sources, но патч спокойно становится на gentoo-dev-sources. Я вот пока что перевел /home раздел на него, глюков нет. Но понятно, что лучше сильно на его надежность пока не надеяться. :)
--Nickolay 11:52, 4 Фев 2005 (GMT)
Нужно ли добавить описание флагов -fflag, взятое из манов или просто отправить читать маны?
--Killy 17:26, 1 сентября 2006 (UTC)
