LINUX.ORG.RU

-march=native -O2 -pipe для всего. и не слушай анонимусов, а то насоветуют всякого...

Lavos ★★★★★
()

Покажи cat /proc/cpuinfo для начала. А вообще, если не планируешь распределенную компиляцию, то для начала -march=native - самое-то.

Pinkbyte ★★★★★
()
Ответ на: комментарий от Pinkbyte

4 ядра:

processor       : 0
vendor_id       : GenuineIntel
cpu family      : 6
model           : 55
model name      : Intel(R) Pentium(R) CPU  N3530  @ 2.16GHz
stepping        : 8
microcode       : 0x815
cpu MHz         : 1315.945
cache size      : 1024 KB
physical id     : 0
siblings        : 4
core id         : 0
cpu cores       : 4
apicid          : 0
initial apicid  : 0
fpu             : yes
fpu_exception   : yes
cpuid level     : 11
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm sse4_1 sse4_2 movbe popcnt tsc_deadline_timer rdrand lahf_lm 3dnowprefetch ida arat epb dtherm tpr_shadow vnmi flexpriority ept vpid tsc_adjust smep erms
bugs            :
bogomips        : 4326.40
clflush size    : 64                                                                                                                    
cache_alignment : 64                                                                                                                    
address sizes   : 36 bits physical, 48 bits virtual                                                                                     
power management:
Alternating_Current
() автор топика
Ответ на: комментарий от dvrts

Если умеешь в тонкий тюнинг опций gcc - профит есть. Или если у тебя супер-пупер новый проц и древний gcc в котором нет оптимального набора оптимизаций для native. Ну и кросскомпиляция(в некоторых случаях) и распределенная компиляция(для distcc native противопоказан).

В остальным случаях это - экономия на спичках. Профиту не будет, наоборот можно что-нибудь припороть, если не разбираешься. А если не знаешь как чинить - чинить будешь долго.

Ну и вообще, систему лучше собирать с более-менее безопасным набором CFLAGS. А вот отдельные пакеты можно собирать с люто-бешено упоротыми CFLAGS, чтоб ловить профит в нужных местах, благо package.env решает

Pinkbyte ★★★★★
()
Последнее исправление: Pinkbyte (всего исправлений: 1)
Ответ на: комментарий от dvrts

native может включать излишние оптимизации, которые на деле оборачиваются потерями в производительности - так, например, слышал негативные отзывы о подстройке размеров кэша (-cache-param или как-то так)

anonymous
()
Ответ на: комментарий от wakuwaku

Оно?

igor@area73 ~ $ echo "" | gcc -march=native -v -E - 2>&1 | grep cc1
 /usr/lib/gcc/x86_64-linux-gnu/4.8/cc1 -E -quiet -v -imultiarch x86_64-linux-gnu - -march=corei7 -mcx16 -msahf -mmovbe -mno-aes -mpclmul -mpopcnt -mno-abm -mno-lwp -mno-fma -mno-fma4 -mno-xop -mno-bmi -mno-bmi2 -mno-tbm -mno-avx -mno-avx2 -msse4.2 -msse4.1 -mno-lzcnt -mno-rtm -mno-hle -mrdrnd -mno-f16c -mno-fsgsbase -mno-rdseed -mprfchw -mno-adx -mfxsr -mno-xsave -mno-xsaveopt --param l1-cache-size=24 --param l1-cache-line-size=64 --param l2-cache-size=1024 -mtune=generic -fstack-protector -Wformat -Wformat-security
Alternating_Current
() автор топика
Ответ на: комментарий от Alternating_Current

Глянь выхлоп

gcc -march=native -E -v - </dev/null 2>&1 | grep cc1

Если хочешь заморочиться сферическими оптимизациями - погугли про каждую опцию.

Если хочешь чтобы всё работало стабильно - пока забей, отстрелить себе яйца ты еще успеешь.

Pinkbyte ★★★★★
()
Ответ на: комментарий от anonymous

слышал негативные отзывы о

а я слышал как кто-то в очереди(в магазине) пукнул сегодня... толи дядя толи тётя.. не знаю..

JK
()
Ответ на: комментарий от dvrts

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

Harald ★★★★★
()

Выхлоп

gcc -### -march=native -E /usr/include/stdlib.h 2>&1 | grep "/usr/libexec/gcc/.*cc1"
спасет отца русской демократии

Waldo-de-Kard ★★
()
Ответ на: комментарий от Pinkbyte

Ну то есть если я собираю свой уютный домашний сервачек, и собираю все на нем же, то юзать native и не париться, верно?

dvrts ★★★
()
Ответ на: комментарий от Pinkbyte

А вот отдельные пакеты можно собирать с люто-бешено упоротыми CFLAGS

Можешь привести какие-нибудь примеры, кроме sqlite? Я имею в виду не что-то узкоспециализированное (типа научных числодробилок), а какие-то более или менее обычные для хомячкового десктопа программы.

anonymous
()
Ответ на: комментарий от anonymous

кодеки, архиваторы, всё что в top на первых строчках

anonymous
()
Ответ на: комментарий от Harald

древним процессорам место на свалке

anonymous
()
Ответ на: комментарий от anonymous

march вообще не включает никаких оптимизаций, дурилка ты картонная

anonymous
()
Ответ на: комментарий от anonymous

какие-то более или менее обычные для хомячкового десктопа программы

В своё время, когда у меня не было GPU, умеющего в vdpau, сборка mplayer с -O3 и еще парочкой опций позволяла некоторым HD-видео таки переставать тормозить. Сейчас это мягко говоря неактуально на современных десктопах. Даже если драйвер не умеет аппаратного декодирования, мощности процессора как правило хватит чтобы пережевать достаточно крупное видео без проблем и дополнительных оптимизаций.

Pinkbyte ★★★★★
()
Ответ на: комментарий от Pinkbyte

Если умеешь в тонкий тюнинг опций gcc - профит есть.

Откройте капот Покажите ваш make.conf. Любопытно узнать что в нем :)

Deleted
()
Ответ на: комментарий от Harald

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

А гентощка, любовно собранная с core2 взлетит на core i7 CPU ?

Deleted
()
Ответ на: комментарий от Deleted

разумеется взлетит

иначе компания Intel до сегодняшних дней не дожила бы :)

Harald ★★★★★
()
Ответ на: комментарий от Deleted

На десктопах - march=native, на серваках - march либо не указан(x86_64), либо i686(наследие прошлого). Почему? Потому что distcc и бинарные пакеты.

Подробнее о конфигурации portage на моих десктопах можно посмотреть тут

И да, последний сервак с Pentium II(i686) я закопал чуть больше чем 2 года назад всего.

Ну и традиционно - я НЕ говорил, что умею в крутой тюнинг опций gcc. Это больше к Silvy и megabaks.

Pinkbyte ★★★★★
()
Последнее исправление: Pinkbyte (всего исправлений: 1)
Ответ на: комментарий от Deleted

обратная совместимость же - если набор инструкций нового процессора >= набор инструкций старого -> тогда взлетит.

А вообще если не уверен, никто не мешает подписать -mtune=generic. Будет чуть медленнее, зато меньше проблем с совместимостью

Pinkbyte ★★★★★
()
Ответ на: комментарий от Pinkbyte

Благодарю.

Подробнее о конфигурации portage на моих десктопах можно посмотреть тут

Очень аккуратно сделано с локальными юзами. Понравилось.

Deleted
()
Последнее исправление: Deleted (всего исправлений: 1)
29 января 2015 г.
13 марта 2015 г.
Ответ на: комментарий от Alternating_Current

Очень скудная инфа на русском по cflags. В лучшем случае в контексте win32-asm в дебрях упоминается; или куцая статейка в вики.На английском тоже все далеко не очевидно. Новичку абсолютно нет шансов. Я правильно понимаю, что если есть желание загнаться по этому, то нужно сначала выучить asm, потом С, потом gcc, а потом уже книги по настройке ядра? Все настолько цепляется друг за друга, что новичку нет смысла глубоко копать, лучше сразу пойти другим путем.
Я правильно понял, что флаг -pipe убирают только программные разработчики ради комфортной отладки своего кода(гуманитарными словами)?

proshin
()
Ответ на: комментарий от proshin

лол. чиатй ман конпилера. изучать нужно конпеляторы и оптимизацию в них, архитектуру процев и асм, сишку

anonymous
()
Ответ на: комментарий от proshin

asm, потом С, потом gcc, а потом

вообще, лучше в обратном порядке, лол

изи же, это всё примитивщина, разве что обернуть сознание вокруг такой многословной примитивщины как асм может быть непросто

в общем случае достаточно прочитать man gcc и загуглить непонятные оптимизации кода, да и у тех, что там объяснены, могут быть интересные сайд-эффекты

wakuwaku ★★★★
()

-march=native

Зачем? Вот пример моих:

CFLAGS="-O2 -pipe -msse -msse2 -msse3 -mssse3 -msse4.1"
В итоге скомпиленные на работе бинарные пакеты встают и на домашнем древнючем компьютере, и на домашнем полу-ПК (экс-ноутбуке).

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Eddy_Em

херню написал, например, у тебя не указан таргет для оптимизации, на другом компе с ним всё равно будет работать, но на основном компе(для которого указан таргет) — быстрее

anonymous
()
Ответ на: комментарий от anonymous

для оптимизации

Какой, нафиг, оптимизации, если у меня разные процессоры?

на другом компе с ним всё равно будет работать, но на основном компе(для которого указан таргет) — быстрее

Насколько быстрее? На 1%?

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Eddy_Em

Какой, нафиг

такой

Насколько быстрее

не знаю, давай пакет для тестов. у меня в разы бывает

anonymous
()
Ответ на: комментарий от wakuwaku

Язык ассемблера надо знать хотя бы поверхностно перед тем, как С изучать. А то потом получится идиотизм типа "дядя сказал, что goto — плохо, тратата!". Как послушаешь таких дебилов, аж плакать хочется!

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от anonymous

давай пакет для тестов

Даже придумать как-то не могу, что бы такое жирненькое дать...

в разы бывает

Нет, сынок, это — фантастика!

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от anonymous

компиляторы — тупые конечные автоматы, изобретательность которых ограничена объёмом переусложнённых конструкций, заложенных авторами.

перед тем, как все эти хитрые оптимизации начнут приносить пользу, пройдёт не один десяток лет и велика вероятность, что за это время архитектура, на которую они были рассчитаны, станет неактуальной.

wakuwaku ★★★★
()
Последнее исправление: wakuwaku (всего исправлений: 3)

-march=native, и не парься. GCC лучше тебя знает где эту самую нативу искать. А для «хитрожопых оптимизаций» добавь в make.conf

CPU_FLAGS_X86=«<и вот тут всю строчку пункта flags из /proc/cpuinfo>»

Тогда софтины ищущие всякие сссе сами определяться что им включать, а что нет.

ioway
()
Ответ на: комментарий от wakuwaku

вообще, лучше в обратном порядке, лол

и писать на похапэ.

Мне вот интересно и как ты будешь корочки без знания асма разбирать?

ioway
()
Ответ на: комментарий от Eddy_Em

фантастика говоришь

$ for i in 1 2 3;do time ./c-ray-mt -t 10 <sphfract >/dev/null ;done |& grep ^real

-march=native -Ofast
real    0m1.310s
real    0m1.359s
real    0m1.305s

-march=x86-64 -O2
real    0m2.974s
real    0m2.944s
real    0m2.916s

$ python3 -c 'print("%.2f"%(2.916/1.305))'
2.23

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.