Обсуждение:HOWTO Использование CFLAGS для оптимизации собранных программ

Материал из Gentoo Linux Wiki

Перейти к: навигация, поиск

Вот нашел в статье некоторые (на мой взгляд) ошибки.

  1. export CFLAGS='bla' emerge не проигнорирует. Напротив, если какая-то переменная экспортирована в окружение, то emerge воспримет именно ее, а не переменную из make.conf.
  2. -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)

Личные инструменты