[gcc44| gcc45| gcc46| gcc47| clang.xcode.46| clang.32] + mplayer + benchmark

 ( Pontscho | 2013. február 24., vasárnap - 15:03 )

Érdekelt, h mennyivel lassabb a clanggal forditott mplayer a mindenféle gcc verziókhoz képest.

Értelemszerűen minden esetben csak a compiler változott, ua. code base (latest mplayer svn), ua. paraméterek fordításhoz és futtatáshoz.

hw: core2 @ 2.4GHz, mpb 2008 late, 10.6.8

---
cmd: ./mplayer.* Carousel\ \(DirCut\).mp4 -benchmark -vo null -nosound

mplayer, core2, clang.default
BENCHMARKs: VC:  12.994s VO:   0.004s A:   0.000s Sys:   0.276s =   13.273s
BENCHMARK%: VC: 97.8927% VO:  0.0276% A:  0.0000% Sys:  2.0797% = 100.0000%

mplayer, core2, clang.32
BENCHMARKs: VC:  12.973s VO:   0.003s A:   0.000s Sys:   0.268s =   13.244s
BENCHMARK%: VC: 97.9498% VO:  0.0233% A:  0.0000% Sys:  2.0269% = 100.0000%

mplayer, core2, gcc.447
BENCHMARKs: VC:  12.668s VO:   0.003s A:   0.000s Sys:   0.232s =   12.904s
BENCHMARK%: VC: 98.1770% VO:  0.0267% A:  0.0000% Sys:  1.7963% = 100.0000%

mplayer, core2, gcc.463
BENCHMARKs: VC:  12.717s VO:   0.003s A:   0.000s Sys:   0.290s =   13.011s
BENCHMARK%: VC: 97.7437% VO:  0.0255% A:  0.0000% Sys:  2.2308% = 100.0000%

mplayer, core2, gcc.472
BENCHMARKs: VC:  12.673s VO:   0.003s A:   0.000s Sys:   0.292s =   12.968s
BENCHMARK%: VC: 97.7247% VO:  0.0246% A:  0.0000% Sys:  2.2507% = 100.0000%

---
cmd: ./mplayer.* Carousel\ \(DirCut\).mp4 -benchmark -vo null -nosound -lavdopts threads=2

mplayer, core2, clang.default
BENCHMARKs: VC:   8.258s VO:   0.006s A:   0.000s Sys:   0.478s =    8.743s
BENCHMARK%: VC: 94.4618% VO:  0.0674% A:  0.0000% Sys:  5.4708% = 100.0000%

mplayer, core2, clang.32
BENCHMARKs: VC:   8.387s VO:   0.005s A:   0.000s Sys:   0.493s =    8.885s
BENCHMARK%: VC: 94.3934% VO:  0.0593% A:  0.0000% Sys:  5.5473% = 100.0000%

mplayer, core2, gcc.447
BENCHMARKs: VC:   8.177s VO:   0.004s A:   0.000s Sys:   0.418s =    8.599s
BENCHMARK%: VC: 95.0923% VO:  0.0517% A:  0.0000% Sys:  4.8561% = 100.0000%

mplayer, core2, gcc.463
BENCHMARKs: VC:   7.935s VO:   0.005s A:   0.000s Sys:   0.484s =    8.424s
BENCHMARK%: VC: 94.1971% VO:  0.0612% A:  0.0000% Sys:  5.7418% = 100.0000%

mplayer, core2, gcc.472
BENCHMARKs: VC:   8.082s VO:   0.004s A:   0.000s Sys:   0.451s =    8.538s
BENCHMARK%: VC: 94.6643% VO:  0.0497% A:  0.0000% Sys:  5.2860% = 100.0000%

gcc -> csá, kuka.

Hozzászólás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.

A cimben a [ es ]kozotti reszbe tudnal rakni legalabb egy space-t? Mivel a browser engine egy szonak szamolja, nem tudja elvalasztani, ezert szettolja a "friss blogbejegyzesek" blokkot a jobboldalon, az meg szettolja az egesz HUP layoutot.
Koszi!

Masreszt hogyan jon ki az, hogy a gcc kuka? Mindenhol gyorsabb volt valamennyivel a gcc-s kod, ha jol ertelmezem a kimenetet.

Ugy, h ez mar egyaltalan nem szignifikans a clanggal jaro pluszhoz kepest. Egy 139s hosszu 360p-s h264 dekodolasanal egy-ket-harom tized masodperces kulonbseg semmi.

---
pontscho / fresh!mindworkz

Ertem. Mondjuk nem ismerem annyira a clangot, hogy tudjam, mik azok a pluszok, amiket nyujt, bar ahogy lattam C++11 tamogatasa mar majdnem teljes.

> C++11 támogatása már majdnem teljes

Ez érdekel.
Amúgy a gcc 4.7-é is annak tűnik (bár az std::put_time hiányzik nekem).
Sokat változtattak a gcc-n az utóbbi időben, szerintem jót tesz neki ez a verseny a clang-gal.

Jó dolog a verseny :)

Mar csak a jobb forditasi hibauzenetekert is erdemes lehet kiprobalni. Nem tul sokat kodolok C/C++ -ban (mindenki szerencsejere), viszont nagyon sokat tud segiteni nekem a CLang.
--
Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. | Gentoo Portal

Azt figyelembe vetted, hogy legalább az ffmpeg-et, de leginkább minden felhasznált multimédiás libet újra kéne fordítani egy értelmes eredményhez?


% ldd /usr/bin/mplayer
linux-vdso.so.1 (0x00007fffaddff000)
libm.so.6 => /lib64/libm.so.6 (0x00007f3ddf2c2000)
libncurses.so.5 => /lib64/libncurses.so.5 (0x00007f3ddf06e000)
libsmbclient.so.0 => /usr/lib64/libsmbclient.so.0 (0x00007f3dde863000)
libpng15.so.15 => /usr/lib64/libpng15.so.15 (0x00007f3dde636000)
libz.so.1 => /lib64/libz.so.1 (0x00007f3dde420000)
libmng.so.1 => /usr/lib64/libmng.so.1 (0x00007f3dde1ad000)
libjpeg.so.8 => /usr/lib64/libjpeg.so.8 (0x00007f3dddf5c000)
libgif.so.4 => /usr/lib64/libgif.so.4 (0x00007f3dddd52000)
libasound.so.2 => /usr/lib64/libasound.so.2 (0x00007f3ddda66000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007f3ddd862000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f3ddd646000)
libdvdread.so.4 => /usr/lib64/libdvdread.so.4 (0x00007f3ddd429000)
libcdio_cdda.so.1 => /usr/lib64/libcdio_cdda.so.1 (0x00007f3ddd221000)
libcdio_paranoia.so.1 => /usr/lib64/libcdio_paranoia.so.1 (0x00007f3ddd019000)
libfreetype.so.6 => /usr/lib64/libfreetype.so.6 (0x00007f3ddcd7b000)
libfontconfig.so.1 => /usr/lib64/libfontconfig.so.1 (0x00007f3ddcb41000)
libfribidi.so.0 => /usr/lib64/libfribidi.so.0 (0x00007f3ddc929000)
libass.so.4 => /usr/lib64/libass.so.4 (0x00007f3ddc70b000)
libenca.so.0 => /usr/lib64/libenca.so.0 (0x00007f3ddc4d8000)
libmad.so.0 => /usr/lib64/libmad.so.0 (0x00007f3ddc2b8000)
libspeex.so.1 => /usr/lib64/libspeex.so.1 (0x00007f3ddc09f000)
libtheoradec.so.1 => /usr/lib64/libtheoradec.so.1 (0x00007f3ddbe8f000)
libmpg123.so.0 => /usr/lib64/libmpg123.so.0 (0x00007f3ddbc51000)
liba52.so.0 => /usr/lib64/liba52.so.0 (0x00007f3ddba45000)
libdca.so.0 => /usr/lib64/libdca.so.0 (0x00007f3ddb820000)
libfaad.so.2 => /usr/lib64/libfaad.so.2 (0x00007f3ddb5dd000)
libbs2b.so.0 => /usr/lib64/libbs2b.so.0 (0x00007f3ddb3d7000)
libswscale.so.2 => /usr/lib64/libswscale.so.2 (0x00007f3ddb18c000)
libavformat.so.54 => /usr/lib64/libavformat.so.54 (0x00007f3ddae61000)
libavcodec.so.54 => /usr/lib64/libavcodec.so.54 (0x00007f3dda0f6000)
libavutil.so.51 => /usr/lib64/libavutil.so.51 (0x00007f3dd9ecc000)
libpostproc.so.52 => /usr/lib64/libpostproc.so.52 (0x00007f3dd9cb2000)
libdv.so.4 => /usr/lib64/libdv.so.4 (0x00007f3dd9a86000)
libxvidcore.so.4 => /usr/lib64/libxvidcore.so.4 (0x00007f3dd976f000)
libdvdnav.so.4 => /usr/lib64/libdvdnav.so.4 (0x00007f3dd955b000)
libXext.so.6 => /usr/lib64/libXext.so.6 (0x00007f3dd9349000)
libX11.so.6 => /usr/lib64/libX11.so.6 (0x00007f3dd9010000)
libXss.so.1 => /usr/lib64/libXss.so.1 (0x00007f3dd8e0c000)
libXv.so.1 => /usr/lib64/libXv.so.1 (0x00007f3dd8c06000)
libXvMC.so.1 => /usr/lib64/libXvMC.so.1 (0x00007f3dd8a02000)
libXvMCW.so.1 => /usr/lib64/libXvMCW.so.1 (0x00007f3dd87fd000)
libvdpau.so.1 => /usr/lib64/libvdpau.so.1 (0x00007f3dd85f9000)
libXxf86vm.so.1 => /usr/lib64/libXxf86vm.so.1 (0x00007f3dd83f3000)
libSDL-1.2.so.0 => /usr/lib64/libSDL-1.2.so.0 (0x00007f3dd818f000)
libGL.so.1 => /usr/lib64/libGL.so.1 (0x00007f3dd7e6c000)
libEGL.so.1 => /usr/lib64/libEGL.so.1 (0x00007f3dd7c4e000)
libpulse.so.0 => /usr/lib64/libpulse.so.0 (0x00007f3dd7a04000)
libc.so.6 => /lib64/libc.so.6 (0x00007f3dd765f000)
libtalloc.so.2 => /usr/lib64/libtalloc.so.2 (0x00007f3ddf766000)
libtdb.so.1 => /usr/lib64/libtdb.so.1 (0x00007f3ddf754000)
libwbclient.so.0 => /usr/lib64/libwbclient.so.0 (0x00007f3dd744d000)
libcap.so.2 => /lib64/libcap.so.2 (0x00007f3dd7247000)
libresolv.so.2 => /lib64/libresolv.so.2 (0x00007f3dd7030000)
libnsl.so.1 => /lib64/libnsl.so.1 (0x00007f3dd6e19000)
librt.so.1 => /lib64/librt.so.1 (0x00007f3dd6c11000)
libldap-2.4.so.2 => /usr/lib64/libldap-2.4.so.2 (0x00007f3dd69ca000)
liblber-2.4.so.2 => /usr/lib64/liblber-2.4.so.2 (0x00007f3dd67bb000)
liblcms.so.1 => /usr/lib64/liblcms.so.1 (0x00007f3dd6582000)
/lib64/ld-linux-x86-64.so.2 (0x00007f3ddf5ba000)
libcdio.so.14 => /usr/lib64/libcdio.so.14 (0x00007f3dd635a000)
libbz2.so.1 => /lib64/libbz2.so.1 (0x00007f3dd614a000)
libexpat.so.1 => /usr/lib64/libexpat.so.1 (0x00007f3dd5f21000)
libglib-2.0.so.0 => /usr/lib64/libglib-2.0.so.0 (0x00007f3dd5bff000)
libharfbuzz.so.0 => /usr/lib64/libharfbuzz.so.0 (0x00007f3dd5969000)
libstdc++.so.6 => /usr/lib/gcc/x86_64-pc-linux-gnu/4.7.2/libstdc++.so.6 (0x00007f3dd5662000)
libgcc_s.so.1 => /usr/lib/gcc/x86_64-pc-linux-gnu/4.7.2/libgcc_s.so.1 (0x00007f3dd544c000)
libssl.so.1.0.0 => /usr/lib64/libssl.so.1.0.0 (0x00007f3dd51e3000)
libcrypto.so.1.0.0 => /usr/lib64/libcrypto.so.1.0.0 (0x00007f3dd4e14000)
librtmp.so.0 => /usr/lib64/librtmp.so.0 (0x00007f3dd4bfa000)
libmodplug.so.1 => /usr/lib64/libmodplug.so.1 (0x00007f3dd4929000)
libva.so.1 => /usr/lib64/libva.so.1 (0x00007f3dd4712000)
libx264.so.125 => /usr/lib64/libx264.so.125 (0x00007f3dd4382000)
libvpx.so.1 => /usr/lib64/libvpx.so.1 (0x00007f3dd410c000)
libvorbisenc.so.2 => /usr/lib64/libvorbisenc.so.2 (0x00007f3dd3c3d000)
libvorbis.so.0 => /usr/lib64/libvorbis.so.0 (0x00007f3dd3a10000)
libvo-amrwbenc.so.0 => /usr/lib64/libvo-amrwbenc.so.0 (0x00007f3dd37f6000)
libvo-aacenc.so.0 => /usr/lib64/libvo-aacenc.so.0 (0x00007f3dd35d8000)
libtheoraenc.so.1 => /usr/lib64/libtheoraenc.so.1 (0x00007f3dd33ab000)
libschroedinger-1.0.so.0 => /usr/lib64/libschroedinger-1.0.so.0 (0x00007f3dd30f3000)
libopus.so.0 => /usr/lib64/libopus.so.0 (0x00007f3dd2eb4000)
libopenjpeg.so.1 => /usr/lib64/libopenjpeg.so.1 (0x00007f3dd2c91000)
libopencore-amrwb.so.0 => /usr/lib64/libopencore-amrwb.so.0 (0x00007f3dd2a7d000)
libopencore-amrnb.so.0 => /usr/lib64/libopencore-amrnb.so.0 (0x00007f3dd2852000)
libmp3lame.so.0 => /usr/lib64/libmp3lame.so.0 (0x00007f3dd25db000)
libfdk-aac.so.0 => /usr/lib64/libfdk-aac.so.0 (0x00007f3dd232f000)
libfaac.so.0 => /usr/lib64/libfaac.so.0 (0x00007f3dd211d000)
libaacplus.so.2 => /usr/lib64/libaacplus.so.2 (0x00007f3dd1eee000)
libxcb.so.1 => /usr/lib64/libxcb.so.1 (0x00007f3dd1ccf000)
libpulse-simple.so.0 => /usr/lib64/libpulse-simple.so.0 (0x00007f3dd1aca000)
libnvidia-tls.so.313.18 => /usr/lib64/libnvidia-tls.so.313.18 (0x00007f3dd18c6000)
libnvidia-glcore.so.313.18 => /usr/lib64/libnvidia-glcore.so.313.18 (0x00007f3dcf3c4000)
libX11-xcb.so.1 => /usr/lib64/libX11-xcb.so.1 (0x00007f3dcf1c2000)
libxcb-dri2.so.0 => /usr/lib64/libxcb-dri2.so.0 (0x00007f3dcefbd000)
libxcb-xfixes.so.0 => /usr/lib64/libxcb-xfixes.so.0 (0x00007f3dcedb6000)
libudev.so.1 => /lib64/libudev.so.1 (0x00007f3dceb7c000)
libdrm.so.2 => /usr/lib64/libdrm.so.2 (0x00007f3dce970000)
libjson.so.0 => /usr/lib64/libjson.so.0 (0x00007f3dce766000)
libpulsecommon-3.0.so => /usr/lib64/pulseaudio/libpulsecommon-3.0.so (0x00007f3dce4fd000)
libICE.so.6 => /usr/lib64/libICE.so.6 (0x00007f3dce2e1000)
libSM.so.6 => /usr/lib64/libSM.so.6 (0x00007f3dce0d9000)
libXtst.so.6 => /usr/lib64/libXtst.so.6 (0x00007f3dcded3000)
libwrap.so.0 => /lib64/libwrap.so.0 (0x00007f3dcdcca000)
libsndfile.so.1 => /usr/lib64/libsndfile.so.1 (0x00007f3dcda63000)
libFLAC.so.8 => /usr/lib64/libFLAC.so.8 (0x00007f3dcd82b000)
libogg.so.0 => /usr/lib64/libogg.so.0 (0x00007f3dcd624000)
libasyncns.so.0 => /usr/lib64/libasyncns.so.0 (0x00007f3dcd41f000)
libdbus-1.so.3 => /usr/lib64/libdbus-1.so.3 (0x00007f3dcd1e3000)
libgdbm.so.4 => /usr/lib64/libgdbm.so.4 (0x00007f3dccfda000)
libattr.so.1 => /lib64/libattr.so.1 (0x00007f3dccdd5000)
libgobject-2.0.so.0 => /usr/lib64/libgobject-2.0.so.0 (0x00007f3dccb86000)
libgraphite2.so.3 => /usr/lib64/libgraphite2.so.3 (0x00007f3dcc969000)
libicule.so.50 => /usr/lib64/libicule.so.50 (0x00007f3dcc728000)
libicuuc.so.50 => /usr/lib64/libicuuc.so.50 (0x00007f3dcc3b5000)
liborc-0.4.so.0 => /usr/lib64/liborc-0.4.so.0 (0x00007f3dcc13d000)
libfftw3f.so.3 => /usr/lib64/libfftw3f.so.3 (0x00007f3dcbdd0000)
libXau.so.6 => /usr/lib64/libXau.so.6 (0x00007f3dcbbcc000)
libXdmcp.so.6 => /usr/lib64/libXdmcp.so.6 (0x00007f3dcb9c6000)
libuuid.so.1 => /lib64/libuuid.so.1 (0x00007f3dcb7c1000)
libffi.so.6 => /usr/lib64/libffi.so.6 (0x00007f3dcb5b8000)
libicudata.so.50 => /usr/lib64/libicudata.so.50 (0x00007f3dc9fe4000)

Igen, mert nem ma kezdtem az ipart, de egy raw h.264 dekodolashoz nem kell ez a sok marhasag, eleg csak egy normalisan forditott mplayer. :)

---
pontscho / fresh!mindworkz

Rendben, vedd úgy, hogy nem szóltam. :)

http://hup.hu/modules.php?name=News&file=article&sid=704 :)
--
"ssh in a for loop is not a solution" – Luke Kanies, Puppet developer

Felmerült bennem, hogy rákeresek a felhasználónevére kommentelés előtt, de ezt most benéztem. :)

Érdekes 11 év után újra elolvasni ezt a cikket.

"JPEG loadert annyit tölt le az ember, amennyit nem szégyell, hangrendszer is van egy-kettő, HW gyorsított OpenGL dögivel."
"Ma már kezd unalmassá válni az állandó variálás, hogy akár egy ISDN modem driver működjön."

egy intel-es icc -re még vevő lennék a felsorolásba, ha megoldható:)

az egy bugware szar, fyi

--
NetBSD - Simplicity is prerequisite for reliability

'coz?
--
Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. | Gentoo Portal

Nem AMD-n kell hasznalni :)

Vannak-e abban a h264 decoderben kézzel hegesztett assembly betétek?

Na pont engem is ez érdekelne. Leginkább abból a szempontból, hogy mennyire korrekten tud position independent code-ot generálni.

"Jegyezze fel a vádhoz - utasította Metcalf őrnagy a tizedest, aki tudott gyorsírni. - Tiszteletlenül beszélt a feljebbvalójával, amikor nem pofázott közbe."

azért assembly-ben ez nem egy akkora taszk:)

Igaz, igaz.
Az mondjuk nem várható a fordítótól, hogy position independent szempontból nem optimális assembly betétbe belemódosítson...

"Jegyezze fel a vádhoz - utasította Metcalf őrnagy a tizedest, aki tudott gyorsírni. - Tiszteletlenül beszélt a feljebbvalójával, amikor nem pofázott közbe."

assembly betétbe nem is szabad belemódosítania, csúnya is lenne:)