abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
dnes 06:00 | Komunita

O víkendu probíhá v Praze na Karlově náměstí 13 konference InstallFest 2020. Na programu je celá řada zajímavých přednášek a workshopů. Přednášky lze sledovat také online. Přehled dění na Twitteru.

Ladislav Hagara | Komentářů: 0
včera 15:22 | Komunita

Daniel Vetter ve zprávě rozeslané do vícero e-mailových konferencí shrnuje situaci kolem financování služeb poskytovaných projektům Freedesktop.org, zvláště spojeným s X.Org (grafické knihovny atp.). Vzhledem k rostoucí popularitě služeb jako CI (Continuous Integration) rostou také náklady na hosting (očekávané výdaje od 75 tisíc dolarů za rok), a proto se hledá sponzor, nebo bude nutné služby v horizontu několika měsíců omezit.

Fluttershy, yay! | Komentářů: 6
včera 14:55 | Zajímavý článek

Knot DNS slaví deset let své existence. Projekt autoritativního DNS serveru Knot DNS patří mezi nejstarší projekty Laboratoří CZ.NIC. Dnes je tomu právě deset let od uložení prvotního prototypu serveru commitem 2da03d5da do veřejného repozitáře Git.

Ladislav Hagara | Komentářů: 0
včera 14:11 | Nová verze

Byla vydána nová verze 2.53.1 svobodného multiplatformního balíku internetových aplikací SeaMonkey (Wikipedie). Přehled novinek v poznámkách k vydání. Hlavní změny jsou pod kapotou. Nová hlavní verze 2.53 používá základ z Firefoxu a Thunderbirdu 60.

Ladislav Hagara | Komentářů: 0
včera 07:00 | Zajímavý software

Budou to tři roky, co Canonical ukončil vývoj mj. grafického prostředí Unity8 a souvisejících projektů jako smartphone s Ubuntu Touch. Toho se ujala komunita UBports a vedle toho vznikl fork Yunit, který již neexistuje, zatímco Unity8 se dostane do Debianu. Nebude se však jmenovat Unity8, nýbrž Lomiri, jak bylo nyní oznámeno.

Fluttershy, yay! | Komentářů: 0
včera 06:00 | Zajímavý projekt

Úrad podpredsedu vlády SR pre investície a informatizáciu vyhlásil výzvu na podporu migrácie na open source a podporu budovania inteligentných miest a regiónov. Dátum uzavretia 1. hodnotiaceho kola je 21.04.2020. Žiadatelia môžu získať od 200 000 do 1 000 000 eur.

atirage21 | Komentářů: 0
včera 05:00 | IT novinky

Otevřená certifikační autorita Let's Encrypt oznámila, že vydala již miliardu certifikátů. Při spuštění veřejné bety Let's Encrypt, v prosinci 2015, bylo celosvětově pomocí HTTPS stahováno cca 40 % webových stránek. Dnes je to 81 %. V USA dokonce 91 %. Podrobnosti na stránce se statistikami. Let's Encrypt má aktuálně 13 zaměstnanců na plný úvazek a roční rozpočet přibližně 3,35 milionu dolarů.

Ladislav Hagara | Komentářů: 8
27.2. 15:33 | Komunita

Fedora stále hledá nové logo. První návrhy byly představeny již před rokem. Designérka Fedory Máirín Duffy ukázala na Twitteru aktuální verzi a žádá uživatele o zpětnou vazbu.

Ladislav Hagara | Komentářů: 22
27.2. 13:55 | Nová verze

Android-x86, tj. port mobilního operačního systému Android na standardní PC s architekturou x86, byl vydán v nové stabilní verze 9.0-r1. Přehled novinek v oficiálním oznámení.

Ladislav Hagara | Komentářů: 19
27.2. 13:11 | Komunita

Mozilla definitivně opouští IRC. Vloni začala hledat novou veřejnou komunikační platformu. Dosud používala IRC (plus interně neveřejný Slack a po nějakou dobu i Mattermost). Nicméně IRC i servery zastarávaly a zejména použitelnost na mobilních zařízeních byla často problematická. Po zvažování a zkoušení různých alternativ se Mozilla přiklonila k otevřenému protokolu Matrix (můžete také znát referenčního klienta Riot) a na konci února IRC vypne.

Ladislav Hagara | Komentářů: 37
Vydržela vám novoroční předsevzetí?
 (11%)
 (6%)
 (3%)
 (81%)
Celkem 211 hlasů
 Komentářů: 0
Rozcestník

GCC a optimalizace s profilerem

8.5.2007 13:30 | Přečteno: 2026× | Programování | Výběrový blog

ve flamu na rootu jsem nasel krasnou vecicku o niz jsem ani netusil, ze ji gcc umi -- optimalizace podle vysledku profileru. pri beznych optimalizacich nema tradicni prekladac (nemlouvim ted o JIT kompilaci) sanci zjistit, jak ktere casti kodu budou volany casto, z jakych mist a podobne... a proste jen hada a tipuje. nicmene, pomoci vcelku zastrcenych direktiv prekladace -fprofile-generate a -fprofile-use jde situace velice hezky zmenit a hodne pozitivnim smerem.

k "na dren" skompilovanemu projektu vedou nasledujici kroky:

v Makefile jsem si na to udelal novy cil "optimal" a vypada to nejak takto:
CFLAGS+=${PROFILE_ARGS}

...

optimal:
       make clean
       make PROFILE_ARGS=-fprofile-generate
       make test0 PROFILE_ARGS=-fprofile-generate
       make clean
       make PROFILE_ARGS=-fprofile-use
       rm *.gcda
       rm *.gcno


vysledky jsou opravdu "vau!":
jako test jsem pouzil svuj interpretr schemu s temito dalsimi nastavenimi:

-Wall -Winline -O3 -std=c99 -pedantic -finline-limit=100000 --param large-function-growth=100000

30 fibonacciho cislo:

33 fibonacciho cislo:
btw. chudaci uzivatele gentoo ... s takovou by meli kompilovat cely system na dvakrat ;-]        

Hodnocení: 100 %

        špatnédobré        

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

Komentáře

Vložit další komentář

Luboš Doležel (Doli) avatar 8.5.2007 13:33 Luboš Doležel (Doli) | skóre: 98 | blog: Doliho blog | Kladensko
Rozbalit Rozbalit vše Re: GCC a optimalizace s profilerem
btw. chudaci uzivatele gentoo ... s takovou by meli kompilovat cely system na dvakrat
Já bych to pro těch pár procent klidně udělal ;-)
andree avatar 8.5.2007 13:46 andree | skóre: 39 | blog: andreeeeelog
Rozbalit Rozbalit vše Re: GCC a optimalizace s profilerem
...uz je len otazka, co je typicka uloha pre taky kernel, KDE, zlib alebo ssh :o)
8.5.2007 13:58 deda.jabko | skóre: 23 | blog: blog co se jmenuje "každý den jinak" | za new york city dvakrát doleva a pak už se doptáte
Rozbalit Rozbalit vše Re: GCC a optimalizace s profilerem
proste tyden, to budete pouzivat (pobezi to sice pomalu), ale jak se to po tom tydnu prekompiluje, tak to bude rychle jak blesk ;-]
Asi před rokem se dostali hackeři na servry Debianu a ukradli jim zdrojové kódy.
8.5.2007 14:38 Kyosuke | skóre: 28 | blog: nalady_v_modre
Rozbalit Rozbalit vše Re: GCC a optimalizace s profilerem
Vždyť to není tak složité. Třeba v Gentoo se bude GCC kompilovat tak, že se zkompiluje s -fprofile-generate, pak se s ním zkompiluje kernel s -fprofile-generate, pak se bude kernel chvíli používat, pak se kernel zkompiluje pomocí -fprofile-use a v tu chvíli budeš mít v GCC nasbíraný vhodný profil, aby sis GCC mohl zkompilovat s -fprofile-use. ;-)
8.5.2007 14:11 Kyosuke | skóre: 28 | blog: nalady_v_modre
Rozbalit Rozbalit vše Re: GCC a optimalizace s profilerem
"btw. chudaci uzivatele gentoo ... s takovou by meli kompilovat cely system na dvakrat ;-] "
U OpenOffice.org se to ale vyplatí, ne? ;-) :-D
8.5.2007 15:18 Michal Vyskočil | skóre: 60 | blog: miblog | Praha
Rozbalit Rozbalit vše Re: GCC a optimalizace s profilerem
btw. chudaci uzivatele gentoo ... s takovou by meli kompilovat cely system na dvakrat ;-]
Spíše natřikrát. V prvním kroku se zdrojáky prostě spustí/přeloží pomocí tcc (aby člověk nemusel čekat na doběh kompilace). Potom se na pozadí spustí kompilace s -fprofile-generate a nakonec třetí kompilace tentokrát už s -fprofile-use. Ještě by to chtělo nějakého démona, který pozná špatně profilovanou binárku a na pozadí ji rekompiluje :-)

BTW: nezkoušel někdo tcc trochu důkladněji?
When your hammer is C++, everything begins to look like a thumb.
8.5.2007 15:32 marbu | skóre: 30 | blog: hromada | Brno
Rozbalit Rozbalit vše Re: GCC a optimalizace s profilerem
a az by to bylo napotreti prelozene tak by uz byla venku dalsi verze ;)
I think warning here is a bug. The biggest cloud service provider. There is no point in being so cool in a cold world.
9.5.2007 18:46 Spike | skóre: 30 | blog: Communicator | Praha
Rozbalit Rozbalit vše Re: GCC a optimalizace s profilerem
Spíš by to uživatelé Gentoo kompilovali jen jednou, protože informace pro profiler by se mohly distribuovat třeba s ebuildy.
9.5.2007 21:35 Kyosuke | skóre: 28 | blog: nalady_v_modre
Rozbalit Rozbalit vše Re: GCC a optimalizace s profilerem
A nebyla by na každé architektuře profilovací data mírně odlišná? A navíc podmíněný překlad a tak.
9.5.2007 22:18 Spike | skóre: 30 | blog: Communicator | Praha
Rozbalit Rozbalit vše Re: GCC a optimalizace s profilerem
Detaily. Určitě by se to dalo vyřešit.
8.5.2007 16:03 cynik
Rozbalit Rozbalit vše Re: GCC a optimalizace s profilerem
Zajimavy, o tehle moznosti jsem nevedel. Ale kdyz jde o rychlost, pak je asi lepsi to optimalizovat rucne prave na zaklade informaci profileru.. to aspon v mych kodech dela nekolikanasobne zrychleni. Clovek se v tom ovsem musi vyznat.

Nicmene, 20% neni nic moc. Asi se to ani nevyplati. Mnohem ucinejsi pochopitelne bude kompilace lepsim prekladacem (icc) nebo se specifikaci procesoru na ktery se to kompiluje.
8.5.2007 16:38 deda.jabko | skóre: 23 | blog: blog co se jmenuje "každý den jinak" | za new york city dvakrát doleva a pak už se doptáte
Rozbalit Rozbalit vše Re: GCC a optimalizace s profilerem
ten kod na kterem jsem to testoval, je rucne optimalizovany snad na maximum (agresivni inlining, optimalizace na predavani argumentu pres resgistry,....) ... takze tech 20% je hezke cislo.... i kdyz na jinem kodu to muze byt jinak....

problem informaci z profileru je takovy, ze kdyz se z nich da neco vycist, tak ty informace muzou byt k nicemu... protoze, aby se odhalil opravdovy beh programu, tak je potreba mit zaple optimalizace a s optimalizacemi zase nejde videt, ktera cast programu prave probiha, protoze binarni kod neodpovida zdrojovemu kodu ;-] (problem jak z kvantove fyziky ;-])
Asi před rokem se dostali hackeři na servry Debianu a ukradli jim zdrojové kódy.
8.5.2007 16:49 Kyosuke | skóre: 28 | blog: nalady_v_modre
Rozbalit Rozbalit vše Re: GCC a optimalizace s profilerem
Třeba tím chtěl naznačit, že bys měl začít psát rovnou kompilátor... ;-)
8.5.2007 18:46 deda.jabko | skóre: 23 | blog: blog co se jmenuje "každý den jinak" | za new york city dvakrát doleva a pak už se doptáte
Rozbalit Rozbalit vše Re: GCC a optimalizace s profilerem
doufam, ze to brzo prijde... ;-] do zacatku srpna musim mit kompletni paralelni interpretr schemu (mozna dopisu i posledni kapitolu toho serialu) a pak kdo vi?! ...mozna prijde i ten prekladac, dle hesla "bodly compile what no man has compiled before!" ...ale vsechno postupne... ;-]
Asi před rokem se dostali hackeři na servry Debianu a ukradli jim zdrojové kódy.
Luk avatar 8.5.2007 16:55 Luk | skóre: 47 | blog: Kacířské myšlenky | Kutná Hora
Rozbalit Rozbalit vše Re: GCC a optimalizace s profilerem
problem jak z kvantove fyziky
Ono už to, že se nějaký profiling dělá, značně mění podmínky. Zvlášť u programů, kde je něco časově kritického.
LinuxMarket - linuxový e-shop | LinuxEXPRES - linuxový magazín | OpenOffice.cz - portál uživatelů OpenOffice/LibreOffice
8.5.2007 18:02 peter_h | blog: need4speed
Rozbalit Rozbalit vše Re: GCC a optimalizace s profilerem
Neviem ci ta dobre chapem, ale to sa tam nezaratava.
Ale lepsi postup je imo najst s oprofile hotspod a zoptimalizovat len ten.
8.5.2007 18:04 peter_h | blog: need4speed
Rozbalit Rozbalit vše Re: GCC a optimalizace s profilerem
s/hotspod/hotspot/
Luk avatar 8.5.2007 18:18 Luk | skóre: 47 | blog: Kacířské myšlenky | Kutná Hora
Rozbalit Rozbalit vše Re: GCC a optimalizace s profilerem
Nejde o to, co se tam započítává. Jde o to, že profiling zdržuje a neumožňuje příliš odhalit, kde se čeká na HW, jaký má vliv přepínání kontextu apod. Prostě klasický problém změny podmínek tím, že se jev pozoruje.

Zrovna takový problém teď řeším, konkrétně neúnosně velké vytížení procesoru. Jde o to, že spolupracují tři procesy, a jakmile se některý z nich profiluje, situace se změní natolik, že problematický jev není pozorovatelný.
LinuxMarket - linuxový e-shop | LinuxEXPRES - linuxový magazín | OpenOffice.cz - portál uživatelů OpenOffice/LibreOffice
Josef Kufner avatar 8.5.2007 19:47 Josef Kufner | skóre: 69
Rozbalit Rozbalit vše Re: GCC a optimalizace s profilerem
ten kod na kterem jsem to testoval, je rucne optimalizovany snad na maximum (agresivni inlining, optimalizace na predavani argumentu pres resgistry,....) ...
Ale to není ručně optimalizované vůbec. Zkus kouknout, co žere nejvíc času a přepsat to efektivněji, i kdyby se měl kód zesložitit. Pak se začnou dít zázraky a stovky procent budou jen lítat.
Hello world ! Segmentation fault (core dumped)
8.5.2007 20:49 deda.jabko | skóre: 23 | blog: blog co se jmenuje "každý den jinak" | za new york city dvakrát doleva a pak už se doptáte
Rozbalit Rozbalit vše Re: GCC a optimalizace s profilerem
Ale to není ručně optimalizované vůbec.
a ze si jste tim tak jisty! ;-] jenom nekolik clovekodni jsem stravil pri hledani vhodne struktury pro zasobnik -- a ze jich bylo a ze jsou mezi nema rozdily ;-]

btw. vsechno zere vicemene jedna velka smycka, ktera prehazuje hodnoty z jednoho zasobniku na druhy, protoze tam nic jineho neni ;-] (viz moje predchozi posty)

ta hranice, kdy se jedna jeste o optimalizaci a kdy o jiny algoritmus, je opravdu hodne nezretelna.... brano ad absurdum, tak nejlepsi optimalizaci by to bylo prepsat z interpretru na prekladac... ;-] ale to uz by nebylo ono, protoze s tim delam dalsi divociny ;-]
Asi před rokem se dostali hackeři na servry Debianu a ukradli jim zdrojové kódy.
Josef Kufner avatar 8.5.2007 21:22 Josef Kufner | skóre: 69
Rozbalit Rozbalit vše Re: GCC a optimalizace s profilerem
Aha, tak to jsem si to asi vyložil jinak, než jsi to myslel. Vyznělo mi to jako ladění voleb překladače místo úprav kódu ;-)

ad btw: A co to přepsat jen tak na půl? :-D
Hello world ! Segmentation fault (core dumped)
8.5.2007 21:50 deda.jabko | skóre: 23 | blog: blog co se jmenuje "každý den jinak" | za new york city dvakrát doleva a pak už se doptáte
Rozbalit Rozbalit vše Re: GCC a optimalizace s profilerem
argumenty prekladace nejsou nijak slozite ladene ... "jenom" "-O3" a zvetseny limit na inlinovani funkci (viz clanek), abych misto maker mohl pouzivat hezci a bezpecnejsi inline-funkce.... a na zaklade toho je tam nechany prostor pro prekladac, aby si mohl radu veci udelat podle sebe....

ad tak napul -- ono je to pomale prave kvuli tomu, ze se to "preklada do mezijazyku", ktery se proste projizdi ve smyckach ;-] (a ten mezijazyk neni nijak optimalizovany na vykon... spis, aby se s nim daly delat dalsi experimenty...) reseni by bylo v prekladu pomoci JIT. ....pouziti JIT je zajimava myslenka se kterou si delsi dobu pohravam a v plt scheme dava velice zajimave vysledky. jenomze co jsem se dival na spoustu implementaci jazyku s vlastnimi JIT, tak proste jsou dnes nepouzitelne, protoze casto podporuji jenom jeden typ procesoru, ktery zrovna mel dotycny v pocitaci... presto uvazuji o gnu lightning... ale docasu! ;-]
Asi před rokem se dostali hackeři na servry Debianu a ukradli jim zdrojové kódy.
9.5.2007 16:08 martink
Rozbalit Rozbalit vše Re: GCC a optimalizace s profilerem
A co LLVM?
9.5.2007 17:25 deda.jabko | skóre: 23 | blog: blog co se jmenuje "každý den jinak" | za new york city dvakrát doleva a pak už se doptáte
Rozbalit Rozbalit vše Re: GCC a optimalizace s profilerem
dik za tip, mrknu na to.
Asi před rokem se dostali hackeři na servry Debianu a ukradli jim zdrojové kódy.
Jiří Němec avatar 8.5.2007 16:25 Jiří Němec | skóre: 22 | blog: BluPix | Horní Smrčné
Rozbalit Rozbalit vše Re: GCC a optimalizace s profilerem
Tak teď by to už jen chtělo nějaký systém k výměně těch souborů s profily. Pro 20% nárustu výkonu nechám procík zkompilovat systém klidně 20x, ale nikdo mě nedonutí spouštět každý program.

Mimochodem podobným postupem se na jistých datech zvýšil výkon aircracku tuším až o 500%, ale byl použit kompilátor icc.
Spock: "Logic, logic, logic. Logic is the beginning of wisdom, not the end.
8.5.2007 17:21 Roman Schulz | skóre: 8 | Brno
Rozbalit Rozbalit vše Re: GCC a optimalizace s profilerem
Ahoj, díky za super návod. Vůbec jsem o této možnosti optimalizace neměl tušení a myslím že ji časem určitě využiju...
stativ avatar 8.5.2007 18:45 stativ | skóre: 54 | blog: SlaNé roury
Rozbalit Rozbalit vše Re: GCC a optimalizace s profilerem
Bacha, kdysi se mi stalo, že třeba blender nešel s touto volbou přeložit. Nevím jak je na tom teď.
Ať sežeru elfa i s chlupama!!! ljirkovsky.wordpress.com stativ.tk
8.5.2007 18:54 deda.jabko | skóre: 23 | blog: blog co se jmenuje "každý den jinak" | za new york city dvakrát doleva a pak už se doptáte
Rozbalit Rozbalit vše Re: GCC a optimalizace s profilerem
tak to bude vzdycky, ze neco zlobi.... sice je to malinko z jineho soudku... ale ted jsem mel treba problemy prelozit php 5.2.cosi s "make -j2", to same minesota mapserver a najdou se dalsi.... ale co je dneska idealni?!
Asi před rokem se dostali hackeři na servry Debianu a ukradli jim zdrojové kódy.
8.5.2007 21:38 nula | skóre: 22 | blog: archaic
Rozbalit Rozbalit vše Re: GCC a optimalizace s profilerem
Prima tip, díky. Zkusil jsem si to na svém počítacím prográmku a zrychlení jsem naměřil cca 15%, což mě rozhodně potěšilo.
9.5.2007 17:44 zde | skóre: 9 | blog: Linuch | Brno
Rozbalit Rozbalit vše Rozumíte tomu někdo?
Zkusil jsem přeložit jednoduchý program se zapnutým profilováním.
$ more x.c
test(a) {
        if (a & 1) return fun_1(a);
        return fun_2(a);
}
Moc se ale nevyznám ve výstupu. Evidentně LPBX1 je 32 byte, které fungují jako čtyři 64-bitové countery, které počítají průchody čtyřmi základními bloky oné funkce. LC0 je taky jasné, jméno modulu. trojka a čtverka by mohly být čísla řádků... Ostatní se mi ale jeví jako binární šum bez špetky logiky..
        .local  .LPBX1
        .comm   .LPBX1,32,32
        .section        .rodata
.LC0:
        .string "x.gcda"
        .data
        .align 4
.LC1:
        .long   3
        .long   1555776990
        .long   4
        .align 32
        .type   .LPBX0, @object
        .size   .LPBX0, 52
.LPBX0:
        .long   875573616
        .long   0
        .long   1901502412
        .long   .LC0
        .long   1
        .long   .LC1
        .long   1
        .long   4
        .long   .LPBX1
        .long   __gcov_merge_add
        .zero   12
        .text
        .type   _GLOBAL__I_0_test, @function
_GLOBAL__I_0_test:
        pushl   %ebp
        movl    %esp, %ebp
        subl    $8, %esp
        movl    $.LPBX0, (%esp)
        call    __gcov_init
        leave
        ret
        .size   _GLOBAL__I_0_test, .-_GLOBAL__I_0_test
        .section        .ctors,"aw",@progbits
        .align 4
        .long   _GLOBAL__I_0_test
        .align 4
        .long   _GLOBAL__I_0_test
Táto, ty de byl? V práci, já debil.

Založit nové vláknoNahoru

ISSN 1214-1267   www.czech-server.cz
© 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.