LINUX.ORG.RU
ФорумTalks

[2Silvy][gcc]Оптимизация

 


0

0

Еще один вопрос нашелся) Есть например процессор, все тот же core2duo. У него 2 мегабайта общего для ядер кэша (intel smart cache и все дела). Такой вопрос - под какой размер gcc по дефолту оптимизирует собранные программы? имхо, оптимизировать под 2 мегабайта крайне неразумно.

★★★★★

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

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

>кода десятки мегабайт

Далеко не всегда. Точнее почти никогда.

и данных столько же


То же самое.

мастурбация на опции компилятораии


Ну да, мы напишем наш код на .Net v4. Будет тормозить на i7, зато ынтерпрайзненько.

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

Первый и последний раз объясняю - опции компилятора помогут выиграть проценты. Правильные алгоритмы помогут выиграть сотни процентов.

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

Объясни это разработчикам, а не пользователям.

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

> > кода десятки мегабайт

Далеко не всегда. Точнее почти никогда.

> и данных столько же


То же самое.



27635 viking 20 0 1648m 50m 24m S 0.0 1.3 0:06.64 evolution
10720 root 40 0 224m 40m 9.8m S 0.0 1.0 4:37.82 Xorg
25708 viking 20 0 899m 38m 20m S 0.0 1.0 0:13.22 pidgin
24739 viking 40 0 207m 27m 5816 S 0.0 0.7 0:23.66 compiz
2139 named 40 0 223m 26m 2492 S 0.0 0.7 0:00.68 named
24672 viking 40 0 333m 22m 11m S 0.0 0.6 0:00.22 fusion-icon
24641 viking 40 0 340m 21m 12m S 0.0 0.5 0:05.79 gnome-panel
24647 viking 40 0 657m 21m 13m S 0.0 0.5 0:04.17 nautilus
24652 viking 40 0 323m 18m 9116 S 0.0 0.5 0:01.06 python 26085 viking 40 0 353m 17m 13m S 0.0 0.4 0:00.16 knotify4 2418 root 20 0 329m 15m 8276 S 0.0 0.4 0:01.52 httpd 26079 viking 40 0 352m 15m 12m S 0.0 0.4 0:00.39 kded4

99.999% «оптимизаторщиков» школьники и недоучившиеся студенты.

no-dashi ★★★★★
()
Ответ на: комментарий от FractalL

Не выспался после пятницы наверное.

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

> откуда злости столько?

Это не злость, это экспрессия. Оптимизация нужна только там, где она нужна. А если говорить о сути дела, оптимизация нужна в расчетных задачах. Где физику/химию/математику обсчитывают. Но даже там правильный алгоритм в миллион раз полезней правильного компилятора

no-dashi ★★★★★
()
Ответ на: комментарий от devl547

Ну и вдобавок ко всему, все твое задрачивание на размер кэша тупо нафиг не нужно в связи с тем, что у тебя многозадачная система. Ясно?

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

Какой страшный модератор)
Многозадачная или нет, но количество кэш-промахов увеличивать неохота.

devl547 ★★★★★
() автор топика
Ответ на: комментарий от no-dashi

> 99.999% «оптимизаторщиков» школьники и недоучившиеся студенты.

Вы правда думаете, что все программы в течение выданного им кванта времени исполняют весь свой код и обращаются ко всей своей памяти?

Relan ★★★★★
()

автоопределение при выполнении кода, патч от H J Lu

>> The attached patch detects automatically the L2 cache size of a >> >> host

>> x86

>> CPU, following what has already been done for L1 cache. Two schemes


>> are


>> utilized in the detection: AMD CPUs will use CPUID function


0x80000006, and


>> Intel CPUs will try both CPUID function 0x2 and 0x80000006.


CPUID function


>> 0x2 is a bit complex to decode and IMHO Intel is unlikely to >> >> abandon


>> function 0x80000006 for its future products. By trying both for


Intel we can


>> avoid adding more L2 cache descriptors to the decoding function.

Sylvia ★★★★★
()
Ответ на: комментарий от no-dashi

> правильный алгоритм в миллион раз полезней правильного компилятора

К.О. вам сейчас жутко завидует. :)

А что делать когда правильный алгоритм уже используется?

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

> Переписать все на.. Delphi, Java, PHP, C# и ASP.NET ?

Чтобы осознать, что до этого всё было не так уж плохо?

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

Что-то патч не впечатлил. Сейчас поиграюсь с принудительным указанием размера, может поможет.

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

Во имя Баланса Добра и Зла, ответь на мой вопрос!

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

пробуйте, выиграть навряд ли что-то удастся серьезно,
а вот проиграть - запросто )

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

>l2-cache-line-size=2048

А не 1024? Там общий на 2 ядра кэш же.

devl547 ★★★★★
() автор топика
Ответ на: комментарий от no-dashi

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

А смысловая оптимизация(«есть ли смысл писать это приложение?») - поможет выиграть тысячи.

Place-des-Arts
()
Ответ на: комментарий от no-dashi

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

А неправильные и всю 1000 :) Когда от них отказываешься.

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

я к тому , что PGO (-fprofile-*) тоже имеет смысл не для всего и вся, а для отдельных жадных до процессора приложений, обычно в системе сборки таких уже сразу прописывают что-то вроде make profiled

Sylvia ★★★★★
()
Ответ на: комментарий от no-dashi

>Школьники такие школьники

Ха, луркоеб! Дальше можно не читать, все и так ясно. Высер очередной.

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

все равно найдутся те, кому лень читать )
и те, кто считает что экстремальные и экзотические опции помогут им получить намного больше по сравнению с простым -O2 -march=

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

и чтобы уж совсем не было вопросов (core2, но иногда беру пакеты на ноут, поэтому p4):
~ :$cat /etc/make.conf
CHOST=«i686-pc-linux-gnu»
NOCOLOR=«true»
CC=fgcc
CXX=fg++
CXXFLAGS="-O2 -fomit-frame-pointer -g0 -mfpmath=sse,387 -msse2 -march=pentium4"
CFLAGS=«${CXXFLAGS} -pipe»
LDFLAGS="-s -Wl,-O1"
MAKEOPTS="-j3"
http_proxy="http://evy:3125"
ftp_proxy="http://evy:3125"
GENTOO_MIRRORS="ftp://mirror.yandex.ru/gentoo-distfiles/"
#GENTOO_MIRRORS="ftp://ftp.wh2.tu-dresden.de/pub/mirrors/gentoo"
SYNC=«rsync://rsync.gentoo.org/gentoo-portage»
VIDEO_CARDS=«nvidia»
INPUT_DEVICES=«evdev keyboard mouse joystick lirc»
LIRC_DEVICES=«all irlink irman irreal it87 ite8709 mouseremote mouseremote_ps2 parallel saa1100 serial sir tekram tekram_bt829 uirt2 uirt2_raw atiusb audio audio_alsa avermedia avermedia98 avermedia_vdomate»
LINGUAS=«ru en»
ACCEPT_KEYWORDS=«~x86»
PORTAGE_NICENESS=8
PORTDIR_OVERLAY=«/usr/local/portage»

USE=«X nvidia vdpau aac a52 alsa bluetooth bzip2 cairo \
cdda cddb cdparanoia cdr cups dri dvd dvdr exif expat \
ffmpeg firefox fontconfig ftp gif gmp gnutls gstreamer \
gtk gzip hal -debug -doc -demos -examples hddtemp \
joystick jpeg jpeg2k kde kdeenablefinal lame lirc \
lm_sensors lzo mmap mmx mng -mono -motif mp3 mp4 \
mpeg mplayer musepack musicbrainz mysql ncurses \
-networkmanager nptl ogg png policykit qt4 qt3support \
readline rss sasl scanner slang smp sndfile speex sox \
sqlite3 sse sse2 ssl taglib tcpd theora threads \
truetype unicode usb v4l2 vorbis wavpack wifi \
win32codecs x264 xv zlib sql svg consolekit dbus \
encode -avahi -semantic-desktop lzma cleartype \
-berkdb -python3 opengl mmxext opencore-amr acpi \
-fortran -cracklib -mudflap»

source /usr/local/portage/layman/make.conf

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

В продолжении темы: Есть ли какие нибудь сравнения производительности gcc и других компиляторов (intel, ms и др)?

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

Согласен. А те кому не лень читать и на английском прочитают.
Ведь дело не в том знает ли или не знает человек, а в том КАК он добывает информацию. Кто-то самодостаточный - читает мануалы, кто-то погуглит прежде чем задавать вопросы.Ну а есть такие, кто ноет на лоре по самому тупому поводу (поисковиков отродясь не видели)

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

в гугле много, особенно windows
производительность чего интересует? сборки? или скорости самого кода?

можете сами посравнивать, для своего приложения, а в unix/linux все равно ничего кроме GCC на 100% все не соберет

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

А у тебя не возникало идеи создать свой блог в котором бы ты систематизировала информацию? И чтобы в случае чего все ходили туда. Это же лучше чем сотни раз об одном и том же.Наверное уже мозоль на языке?

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

ну так возьмите и соберите разные варианты и посчитайте одно и то же, сразу будет видно что у вас быстрее в данном конкретном приложении, можно будет и с PGO пособирать, а еще лучше сравнить как x86 так и x86_64

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

если на самом деле нужна систематизация - есть lor wiki, правда я пока не знаю что туда писать вообще, потому что в гентушной wiki Safe_Cflags уже почти все написали

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

причем там написали именно под общий случай,
да есть частные, когда нужна максимальная производительность для расчетов, но в таком случае лучше в самом деле смотреть на то как там написаны алгоритмы, пробовать собрать несколько раз, в том числе и PGO вариант, смотреть по тестам...

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

На лоре мало кто полезет в гентушную wiki Safe_Cflags. Тебе здесь верят больше. А судя по тому что ты обладаешь неплохими знаниями и опытом , да еще и тратишь наверное много времени, то было бы очень рационально если бы это вливалось в нечто большее чем просто холиварить на лоре.
В общем - Сильви , советующая очередному ТС добавить флаги -O2 -march=core2 это как гвозди забивать микроскопом (имхо)

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

а в чем должна быть разница? у gcc нет волшебных ключиков , которые добавят >10% производительности везде, те которые есть добавлены в -O2 , -O3 , остальные либо же экспериментальны, и / или могут приводить к проблемам, для x86 на современных процессорах нужно только разрешать sse и обсчет математики ( далеко не каждая программа активно использует математические вычисления ) на SSE регистрах, если отладка не нужна - разрешаем использовать еще 1 регистр процессора -fomit-frame-pointer , все, все рекомендации укладываются в 1 абзац


для x86_64 - опять таки «благодаря» интел , которые выпустили первые свои 64 битные процессоры достаточно порезаными лучше вручную включать -mcx16 -msahf , математика там сразу считается на SSE, отладка тоже не зависит от -fomit-frame-pointer , поэтому он включен в -O2

для любителей экспериментов есть флаги Graphite, можете тестировать, у меня баг в багзилле GCC по графиту уже полгода висит, никому нет дела...

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