abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 18:22 | Nová verze

    Byla vydána verze 0.2.0 v Rustu napsaného frameworku Pingora pro vytváření rychlých, spolehlivých a programovatelných síťových systémů. Společnost Cloudflare jej letos v únoru uvolnila pod licencí Apache 2.0.

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

    Open source RDP (Remote Desktop Protocol) server xrdp (Wikipedie) byl vydán ve verzi 0.10.0. Z novinek je vypíchnuta podpora GFX (Graphic Pipeline Extension). Nová větev řeší také několik bezpečnostních chyb.

    Ladislav Hagara | Komentářů: 4
    včera 04:11 | Nová verze

    Rocky Linux byl vydán v nové stabilní verzi 9.4. Přehled novinek v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 0
    9.5. 22:22 | Bezpečnostní upozornění

    Dellu byla odcizena databáze zákazníků (jméno, adresa, seznam zakoupených produktů) [Customer Care, Bleeping Computer].

    Ladislav Hagara | Komentářů: 14
    9.5. 21:11 | Zajímavý článek

    V lednu byl otevřen editor kódů Zed od autorů editoru Atom a Tree-sitter. Tenkrát běžel pouze na macOS. Byl napevno svázán s Metalem. Situace se ale postupně mění. V aktuálním příspěvku Kdy Zed na Linuxu? na blogu Zedu vývojáři popisují aktuální stav. Blíží se alfa verze.

    Ladislav Hagara | Komentářů: 29
    9.5. 14:33 | Pozvánky

    O víkendu 11. a 12. května lze navštívit Maker Faire Prague, festival plný workshopů, interaktivních činností a především nadšených a zvídavých lidí.

    Ladislav Hagara | Komentářů: 0
    8.5. 21:55 | Nová verze

    Byl vydán Fedora Asahi Remix 40, tj. linuxová distribuce pro Apple Silicon vycházející z Fedora Linuxu 40.

    Ladislav Hagara | Komentářů: 20
    8.5. 20:22 | IT novinky

    Představena byla služba Raspberry Pi Connect usnadňující vzdálený grafický přístup k vašim Raspberry Pi z webového prohlížeče. Odkudkoli. Zdarma. Zatím v beta verzi. Detaily v dokumentaci.

    Ladislav Hagara | Komentářů: 7
    8.5. 12:55 | Nová verze

    Byla vydána verze R14.1.2 desktopového prostředí Trinity Desktop Environment (TDE, fork KDE 3.5). Přehled novinek v poznámkách k vydání, podrobnosti v seznamu změn.

    JZD | Komentářů: 0
    7.5. 18:55 | IT novinky

    Dnešním dnem lze již také v Česku nakupovat na Google Store (telefony a sluchátka Google Pixel).

    Ladislav Hagara | Komentářů: 10
    Podle hypotézy Mrtvý Internet mj. tvoří většinu online interakcí boti.
     (63%)
     (8%)
     (13%)
     (16%)
    Celkem 157 hlasů
     Komentářů: 11, poslední včera 18:00
    Rozcestník

    GCC a optimalizace s profilerem

    8.5.2007 13:30 | Přečteno: 2187× | 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: 31 | 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 ;)
    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.
    Šifrování je absolutní nutnost a pomáhá chránit před nekalými živly
    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ý.
    Šifrování je absolutní nutnost a pomáhá chránit před nekalými živly
    Josef Kufner avatar 8.5.2007 19:47 Josef Kufner | skóre: 70
    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: 70
    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.