Прочитав сообщения в этой теме:
http://www.linux.org.ru/view-message.jsp?msgid=3172469
был немного удивлен касательно поста об флаге оптимизации -O3.
Заинтересовался, решил проверить :)
Система:
Athlon X2 3800+(@2.52Ггц), 1Гб DDR2-800
ArchLinux, kernel 2.6.26 i686, GCC 4.3.2
Итак, проверить решил на том, что чаще всего в обиходе - mplayer.
В качестве тестового ролика выступает одна AMV'эха(Kagami Eated Your Soul) с таким TTX:
H264, 720 x 480, FPS: 29.970, ~2600Kb/s, продолжительность 2:15
По дефолту в config.mak mplayer'а прописан -O4 и -march=native,
я заменял всегда -march на i686. В таком случаи time выдает
значения в среднем:
real 0m31.274s
user 0m27.272s
С флагами -O3 и -O2 результат лучше, но между собой он не
отличается(может погрешности тестирования?):
real 0m30.373s
user 0m26.165s
Потом решил поставить "родной" -march=athlon64, и получил
следующее с -O3:
real 0m29.578s
user 0m25.532s
C -O2 картинка похуже:
real 0m30.548s
user 0m26.468s
Запускалось все по 4 раза с -vo xv и работающим компизом :)
Если компиз отрубить, странный глюк - видео "заикается" каждые
несколько секунд.
Издеваться в режиме gl:yuv=3 и другими кодеками я не стал,
вроде видно что ситуацию с -O3(если такая и была), поправили,
а толк от -march=athlon64 все-же есть :)
В моём случаи это не труЪ, ибо проц от AMD :) Хотя ради интереса глянул бы, вот только с моим инетом качать компилятор "немаленьких" размеров - мазохизм.
ЗЫ: кто-нить в курсе, слухи о том что icc не компилирует ничего толкового для AMD-процов - правда? :)
>ЗЫ: кто-нить в курсе, слухи о том что icc не компилирует ничего толкового для AMD-процов - правда? :)
Сегодня, пока рылся в форумах, перед глазами неоднократно пробегал этот вопрос. Но в детали не вдавался. Общий поверхностный осадок - icc на amd работает, но принципиально не лучше и не хуже gcc.
>> Итак, проверить решил на том, что чаще всего в обиходе - mplayer.
Такой вопрос: а ты только mplayer пересобирал с новыми флагами? Просто он сам почти ничего не делает, нужно пересобирать ffmpeg, x264, etc.
А вообще, в среднем программы собранные с -O2 работают быстрее чем с другими режимами оптимизации, так как на -O3 и выше включаются некоторые агрессивные оптимизации из-за которых код распухает, даёт лишнюю нагрузку на кеш и плохо поддаётся предсказаниям. Но это не всегда так. -Os - это тот же -O2, только без оптимизаций, которые могут привести к увеличению объёма кода.
>Но это не всегда так. -Os - это тот же -O2, только без оптимизаций, которые могут привести к увеличению объёма кода.
Только ты ещё забыл про «It also performs further optimizations designed to reduce code size.» И вот из-за этих оптимизаций скорость падает весьма ощутимо. Я уже писал, что однажды, пытаясь сэкономить память на десктопе и начитавшись, что «-Os - это тот же -O2» перевёл всю систему на -Os. Тормоза были просто удручающие :)
>>а ты только mplayer пересобирал с новыми флагами?
У меня mplayer собирается статически с последним ffmpeg, который стягивается из svn'а :) Т.е. для теста собиралось все что нужно для проигрывание ролика(не пойму правда зачем ты в список енкодер x264 внес :)). А про флаги - при -march=i686 разница между -O2 и -O3 минимальна(доли меиллисекунд, что вписывается в пределах погрешности тестирования). Стоило -march заменить на athlon64, разница сразу выросла до стабильной 1сек.
>>Silvy: mplayer не лучший вариант для подобных тестов
да, в разных ситуациях может быть по разному, но mplayer чаще всего используется из того софта, где можно что-то проверить :) Можно конечно издеваться с gzip/bzip2/etc., но это неинтересно :)
>>Gharik: Диагноз ясен, озвучивать не буду.
можешь не напрягаться, мне это не интересно :) Разгон не смертельный, но был очень важен, когда пришлось рипать 26 DVD-диска с GitS'ами )
>> да и статически она мне не сдалась. Тем более либы не маленькие.
При статической компоновке всё неиспользуемое должно выкинуться. Если конечно не используются функции типа doEverythingAtOnce, которые вытянут все кишки библиотеки за собой.
у Гарика видать какие-то комплексы :) И ему невдомёк, что на 1.8Ггц даже обыкновенные 1080p рипы особо не посмотреть, да и скорость кодирование видео не фонтан. Да и если подобный разгон дался даром, то почему бы и нет? Возможностей СО хватает, дабы удерживать температуру процессора в допустимых пределах.
Тьфу блин, че-то очепятался, просто недавно имел дело со стареньким Athlon 2500+, вот че-то и пристала цифра 1.8 )
>>у меня на со стандартным кулером только до 2.2 получалось разгонять
На это много факторов влияет :) Допустим память у меня спокойно работает на частоте чуть выше 800МГц, материнская плата вытягивает FSB свыше 260Мгц, но тогда и проц начинается греться, и HT-шина уже не выдерживает. Поэтому остановился на среднем значении в 252, хотя более органично вписывает 240 по FSB, когда частота становится 2.4Ггц и память ровно DDR2-800 :)
Ну а про что ещё? Сказки про "бесплатно" тот пылкий юноша пусть девочкам рассказывает, платить общей нестабильностью системы и резким повышением вероятности сбоев вменяемому народу весьма неохота.
P.S. К тому ж 1080p замечательно смотрится в MPEG-2 =)
>>Сказки про "бесплатно" тот пылкий юноша пусть девочкам рассказывает, платить общей нестабильностью системы и резким повышением вероятности сбоев вменяемому народу весьма неохота.
Много консерватизма, паранойи и т.д. вижу в тебе я :) Да, не везде разгон возможен и "бесплатен", но моя машина работает уже больше чем полтора года в таком режиме, ниче, еще ниодного левого бага, падения, зависания и т.д., хотя нагрузки были - тоже кодирование видео сутками на пролёт :) Не сравнимо конечно с серверами, но разгонять сервера - это да, идиотизм )
ЗЫ: хотя странный ты, такое ощущение, что ты о разгоне наслышан, ровно столько же, сколько виндоуз-юзеры о "страшном Linux с консолью, в котором даже видео смотреть нельзя!".
ЗЫЫ: Ну и на какую машинку хватило денег, такую и купил, специально для разгона её не брал. Просто так уж повезло с моделью и остальными комплектующими. Старая машина была более удачной - 64-битный Sempron 2800+, который до сих пор стабильно работает в режиме 2.4Ггц(FSB 300, дальше не пустила материнская плата, ибо в BIOS это было предельное значение :)), хотя стандартная его частота - 1.6Ггц. При этом температурный режим его не изменился почти, от чего можно предположить, что мне попалась старшая модель не прошедшая тестирования, которую отправили в продажу с пониженными частотами... в общем лан, рекомендую просто ознакомится с тем как процессоры проходят маркировку, и не раздавать людям странные диагнозы из-за собственных фобий/etc. :)
>>P.S. К тому ж 1080p замечательно смотрится в MPEG-2 =)
>Если "удручающие тормоза" означают больше 10-15% производительности
Много больше. «в граммах» не измерял, но общее ощущение работы за системой было - как будто даунгрейд на два поколения. Что-нить типа Celeron-733 :) (при родном Athlon XP).
>рекомендую написать в багзиллу gcc, вдруг поправят.
Вряд ли они по 4.1 версиям баги принимают. А с новыми gcc экспериментировать лень.