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 17:44 | Pozvánky

    V pátek 20. února 2025 se v pražské kanceláři SUSE v Karlíně uskuteční 6. Mobile Linux Hackday, komunitní setkání zaměřené na Linux na mobilních zařízeních, kernelový vývoj a uživatelský prostor. Akce proběhne od 10:00 do večera. Hackday je určen všem, kteří si chtějí prakticky vyzkoušet práci s linuxovým jádrem i uživatelským prostorem, od posílání patchů například pomocí nástroje b4, přes balíčkování a Flatpak až po drobné úpravy

    … více »
    lkocman | Komentářů: 0
    dnes 13:33 | IT novinky

    Evropská rada vydavatelů (EPC) předložila Evropské komisi stížnost na americkou internetovou společnost Google kvůli její službě AI Overviews (AI souhrny), která při vyhledávání na internetu zobrazuje shrnutí informací ze zpravodajských serverů vytvořená pomocí umělé inteligence (AI). Evropská komise již v prosinci oznámila, že v souvislosti s touto službou začala firmu Google vyšetřovat. Google obvinění ze strany vydavatelů

    … více »
    Ladislav Hagara | Komentářů: 9
    dnes 04:44 | Komunita

    Ubuntu 26.04 (Resolute Raccoon) už nebude v desktopové instalaci obsahovat GUI nástroj 'Software & Updates'. Důvodem jsou obavy z jeho složitosti pro běžné uživatele a z toho plynoucích bezpečnostních rizik. Nástroj lze doinstalovat ručně (sudo apt install software-properties-gtk).

    NUKE GAZA! 🎆 | Komentářů: 14
    dnes 04:33 | IT novinky

    Thomas Dohmke, bývalý CEO GitHubu, představil startup Entire - platformu pro spolupráci vývojářů a agentů umělé inteligence. Entire získalo rekordních 60 milionů dolarů na vývoj databáze a nástrojů, které mají zefektivnit spolupráci mezi lidmi a agenty umělé inteligence. Dohmke zdůrazňuje potřebu přepracovat tradiční vývojové postupy tak, aby odpovídaly realitě, kdy většinu kódu produkuje umělá inteligence.

    NUKE GAZA! 🎆 | Komentářů: 0
    dnes 04:22 | Zajímavý projekt

    Toyota Connected North America oznámila vývoj open-source herního enginu Fluorite, postaveného na frameworku Flutter. Pro renderování grafiky využívá 3D engine Filament od společnosti Google a dle svého tvrzení cílí na konzolovou kvalitu her. Fluorite je zřejmě navržen tak, aby fungoval i na méně výkonném hardware, což naznačuje možnost použití přímo v ICE systémech vozidel. Zdrojový kód zatím zveřejněný není.

    NUKE GAZA! 🎆 | Komentářů: 1
    dnes 04:11 | Bezpečnostní upozornění

    Byl vytvořen nástroj a postup pro překonání věkového ověření platforem Discord, Kick, Twitch, Snapchat (a možná dalších), kód je open-source a dostupný na GitHubu. Všechny tyto sítě používají stejnou službu k-ID, která určuje věk uživatele scanem obličeje a na původní server posílá pouze šifrovaná metadata, ty ale sociální síť už nedokáže sama nijak validovat, 'útok' spočívá ve vygenerování a podstrčení legitimně vypadajících ověřovacích metadat.

    NUKE GAZA! 🎆 | Komentářů: 9
    včera 14:11 | IT novinky

    Jihokorejská kryptoměnová burza Bithumb přiznala vážné selhání interních systémů, které ji vystavilo riziku sabotáže a nezabránilo chybné transakci v hodnotě přes 40 miliard dolarů (814 miliard Kč). Druhá největší kryptoměnová burza v Koreji minulý týden při propagační akci omylem rozeslala zákazníkům zhruba 620 000 bitcoinů místo 620 000 wonů (8700 Kč). Incident vyvolal pokles ceny bitcoinu o 17 procent. Většinu

    … více »
    Ladislav Hagara | Komentářů: 9
    včera 13:55 | Nová verze

    Google Chrome 145 byl prohlášen za stabilní. Nejnovější stabilní verze 145.0.7632.45 přináší řadu novinek z hlediska uživatelů i vývojářů. Podrobný přehled v poznámkách k vydání. Zpátky je podpora grafického formátu JPEG XL, viz Platform Status. Odstraněna byla před třemi lety. Nový dekodér JPEG XL jxl-rs je napsán v Rustu. Zobrazování JPEG XL lze vyzkoušet na testovací stránce. Povolit lze v nastavení chrome://flags (Enable JXL image format).

    Ladislav Hagara | Komentářů: 0
    10.2. 22:44 | Nová verze

    Byla vydána nová verze 1.26 programovacího jazyka Go (Wikipedie). Přehled novinek v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 0
    10.2. 18:11 | Nová verze

    CrossOver, komerční produkt založený na Wine, byl vydán ve verzi 26. Přehled novinek v ChangeLogu. CrossOver 26 vychází z Wine 11.0, D3DMetal 3.0, DXMT 0.72, Wine Mono 10.4.1 a vkd3d 1.18. Do 17. února lze koupit CrossOver+ se slevou 26 %.

    Ladislav Hagara | Komentářů: 17
    Které desktopové prostředí na Linuxu používáte?
     (19%)
     (6%)
     (0%)
     (11%)
     (26%)
     (3%)
     (4%)
     (2%)
     (12%)
     (28%)
    Celkem 852 hlasů
     Komentářů: 25, poslední 3.2. 19:50
    Rozcestník

    Nebojíme se kompilace - III (ladíme)

    26. 10. 2004 | Petr Krčmář | Návody | 24338×

    Takže, abyste si zapamatovali pořadí strun, je tu malá pomůcka: Emil Hodil Granát Do Atomové Elektrárny ... nebojte, nebudeme ladit kytaru, ani jiný nástroj, ale samozřejmě kompilační parametry.

    Už víme, jak kompilace probíhá, už si umíme sami zkompilovat nějaký prográmek a dnes ukončíme naše povídání tím, že si vysvětlíme, jak udělat kompilaci hezčí, hravější, rychlejší... no prostě lepší.

    Skript configure, o kterém jsme si již povídali, zkoumá při svém běhu celý systém a snaží se zjistit, co máme a co nemáme. A podle toho přizpůsobuje parametry, které se následně dostanou až ke kompilátoru a ovlivní tak (velmi výrazně) výsledek jeho práce.

    Makefile je obyčejný textový soubor, takže jej stačí otevřít v oblíbeném editoru [čti vim]. V makefile se kromě jednotlivých příkazů nacházejí také proměnné. Ty jsou zapsány úplně na začátku a zjednodušují nám změnu celého procesu. Nejzajímavější je pro nás proměnná CFLAGS. Ta obsahuje právě parametry kompilátoru a může vypadat třeba takto:

    CFLAGS= -O3 -march=pentium -ffast-math

    Existuje několik důvodů, proč bychom je chtěli měnit:

    • chceme změnit optimalizaci programu
    • chceme překládat na jiném stroji, než na kterém to nakonec poběží
    • chceme si prostě hrát

    Jen vysvětlení ke druhému bodu: kompilovat můžeme na úplně jiném procesoru nebo dokonce jiné architektuře. Není problém překládat na CPU 486 program pro P4 (i když se to v praxi dělá spíš obráceně).

    Parametrů je celá řada a my si popíšeme ty nejzajímavější:

    -mcpu=
    -march=
    Tyto dva parametry jsou si velmi podobné. Oba optimalizují kód pro zvolený procesor. První z nich však nemění tabulku instrukcí, takže aplikace pak běží i na procesorech nižších generací. Příklad: Pokud použijeme -mcpu=pentium-mmx, bude kód skládán tak, aby běžel co nejrychleji na Pentiu MMX, ale nebudou použity žádné instrukce MMX, takže aplikace poběží i na i386. Pokud ale použijeme -march=pentium-mmx, budou použity všechny možnosti optimalizace, včetně využití MMX instrukcí, takže výsledek už na ničem nižším nepojede.

    Podporované možnosti u procesorů Intel a kompatibilních jsou: i386, i486, i586, i686, pentium, pentium-mmx, pentiumpro, pentium2, pentium3, pentium4, prescott, nocona, k6, k6-2, k6-3, athlon, athlon-tbird, athlon-4, athlon-xp, athlon-mp, winchip-c6, winchip2 a c3. Tento výčet není zdaleka konečný a jediný správný. Může se zásadně lišit podle verze gcc a aplikovaných patchů.

    -O
    Určuje míru optimalizace. Tento parametr musí být následován hodnotou (0-3), která určuje, jak moc se kompilátor zabývá vyladěním kódů. Obvykle platí, že čím vyšší stupeň optimalizace zvolíme, tím výkonnější bude výsledný kód a tím delší a časově náročnější bude překlad. Některé aplikace jsou ale na vyšší stupeň citlivé a kompilace neproběhne nebo nakonec aplikace neběží.
    -fexpensive-optimizations
    Aktivuje dodatečně další a náročnější optimalizace.
    -ffast-math
    Při použití tohoto přepínače poruší gcc některá pravidla norem ANSI v zájmu zvýšení výkonu matematických operací.
    -fforce-mem
    Před prováděním matematických operací převádí matematické operandy do registrů.
    -funroll-loops
    Překladač rozepíše cykly, u nichž je předem znám počet průběhů. Místo "udělej 20x blabla" se tedy ve výsledném kódu objeví přímo "blabla blabla blabla blabla ...". Ve výsledku zvýší velikost výsledného binárního kódu, ale zároveň urychlí jeho běh.
    -fschedule-insns
    Instrukce jsou skládány tak, aby se minimalizovala doba čekání na vstupní data.

    To je z nejdůležitějšího asi vše. Chcete-li více, viz man gcc.

    Otázkou ovšem zůstává, co a kdy optimalizovat. Některé distribuce jako Gentoo nebo SourceMage automaticky kompilují zdrojové balíčky už při jejich instalaci. Takže jsou optimalizovány všechny programy i knihovny. V příslušném konfiguračním souboru pak lze nastavit konkrétní kompilační parametry.

    To má pochopitelně několik výhod:

    • řeší to většinu závislostí
    • optimalizuje veškerý kód
    • umožňuje udržovat aktuální distribuci
    • není nutno čekat na balíčky

    Nevýhodou je samozřejmě delší instalace veškerého software (během ní je ovšem možno normálně pracovat). Otázkou všeobjímající kompilace ovšem zůstává, zda se takto ztrávený čas vyplatí. Zarytí Gentooisti budou neobjektivně tvrdit, že rozhodně ano. Zkusme se na celou situaci podívat z nadhledu.

    V každé distribuci jsou k dispozici tisíce programů. Stačí si v konzoli dvakrát stisknout tabulátor a hláška Display all 1637 possibilities? (y or n) nás jistě přesvědčí, že je tomu skutečně tak. Drtivá většina aplikací však spadá do skupiny systémových utilit, jenž jsou velmi nenáročné na procesorový čas. Jsou to například: ls, grep, less, more, sort, cat, echo, ping a mnoho dalších.

    Otázka tedy zní: Vyplatí se nám optimalizovat si i tyto programy? Podle mě ne. Proto je zbytečné volit Gentoo nebo SourceMage jen proto, abychom měli "vyladěný" systém.

    Naopak některé důležité programy je vhodné si optimalizovat na míru svému stroji. Jsou to ale spíše náročnější aplikace jako MPlayer, POV-Ray a podobně, kde se může za jistých okolností hodit každé procento. Rovněž na glibc (hlavní systémová knihovna, kterou využívají všechny programy) můžeme ušetřit kousek zatížení procesoru. Při přehrávání mp3 na 3GHz procesoru nás však ani toto nemusí trápit.

    Jiná situace samozřejmě nastává v případě, že vlastníte nějaký zvláštní druh hardware (například 64 bitový procesor v serveru). Je pochopitelné, že instalace a použití 32 bitové distribuce "tak, jak je", by zde bylo chybou.

    Další stranou mince, kterou je potřeba zvážit, je fakt, že některé distribuce (například Debian) je možno sehnat již předkompilované pro různé druhy platforem, případně můžeme stáhnout upravené balíky (MalýJarda například vyrábí své debianní balíky rovnou pro platformu i686). Máme tak ulehčenou práci, protože optimalizaci už udělal někdo za nás.

    Obecně vzato je optimalizace velmi užitečná věc a v případě náročných projektů nebo nově instalovaných programů, které si sami kompilujeme, se nám může hodit. Ovšem i zde platí klasické pořekadlo: "Všeho s Mírou."

    Tímto uzavíráme náš miniseriálek o kompilacích. Doufám, že se líbíl a že jste se dozvěděli něco nového.

           

    Hodnocení: 51 %

            špatnédobré        

    Nástroje: Tisk bez diskuse

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

    Komentáře

    Vložit další komentář

    26.10.2004 09:03 ja
    Rozbalit Rozbalit vše make
    Dobry clanek. Dekuji, presne tohle jsem potreboval vedet.

    Jen by me jeste zajimalo jak presne pouzit CFLAGS v Makefile, pripadne (jak predat ty parametry make-u v /etc/make.conf) nejak to nemuzu na googlu najit. Nejaky prikladecek by nebyl? :-)
    26.10.2004 10:04 ok
    Rozbalit Rozbalit vše Re: make
    Vždyť to všechno je v tom /etc/make.conf , stačí si přečíst zakomentované řádky ;-)
    26.10.2004 10:07 jose
    Rozbalit Rozbalit vše narast vykonu
    aky mozem cakat priemerny narast vykonu v % pri pouziti optimalizacie pre athlon xp? je to vobec pozorovatelne?
    26.10.2004 10:36 Kamil | skóre: 18 | blog: bejkarny
    Rozbalit Rozbalit vše Re: narast vykonu
    Trošku znát to je, konkrétně tedy u větších programů. Ale stejně nečekej zázraky. Zkus pohledat googlem, určitě něco najde.

    -- JP
    26.10.2004 11:59 Michal
    Rozbalit Rozbalit vše Re: narast vykonu
    V naprosto VYJIMECNYCH PRIPADECH az 30% vykonu. Ale vyjimecny pripad je vyjimecny pripad. Pokud budes pracovat asi tak s 5-rozmernou matici a budes tam provadet vypocty, pak prosim.
    26.10.2004 18:05 Martin Zoubek
    Rozbalit Rozbalit vše Re: narast vykonu
    Tyhle řeči nemám rád, jak jste k tomu číslu došel? Reálná čísla pro všechny:

    testovací sestava: Athlon XP 2600+, 512 MB DDR CL2 paměti, chipset VIA KT400
    systém: Linux, jádro 2.6.9-ck1, gcc 3.4.1
    testy: 1. bzip2, komprese cca 10 MB TARu, 2. lame, komprese cca 40 MB WAVu, 3. scimark2, malá data, 4. scimark2, velká data (nevejdou se do cache)
    výsledky flags/bzip2 - výkon v % (100 % = -O0)/lame/scimark2/scimark2 -large/bzip2 - velikost exe/lame/scimark2

    -O0 100.0 100.0 100.0 100.0 100.0 100.0 100.0
    -O1 170.5 209.2 234.5 129.8 82.8 86.6 80.4
    -O2 158.7 224.5 232.4 122.2 87.1 86.3 86.5
    -O3 171.2 225.6 237.6 130.8 91.4 91.2 91.5
    -Os 177.5 212.0 197.6 128.2 74.2 73.1 73.1
    -O2 -finline-functions 156.9 226.9 232.5 122.0 91.4 91.2 89.7
    -O2 -fweb 172.1 224.1 242.9 130.3 82.9 86.0 86.5
    -O2 -frename-registers 158.4 225.2 231.4 122.6 87.1 86.4 86.5
    -O2 -funswitch-loops 158.7 225.0 234.0 121.9 87.1 86.6 86.5
    -O2 -fforce-addr 178.9 222.7 247.5 121.5 87.1 88.2 87.9
    -O2 -fomit-frame-pointer 175.7 232.9 254.6 123.5 87.1 86.7 86.5
    -O2 -fprefetch-loop-arrays 158.6 225.8 235.3 122.4 87.1 85.5 86.5
    -O2 -funroll-loops 157.7 225.2 243.8 127.9 108.5 119.9 120.7
    -O2 -fbranch-target-load-optimize 158.7 224.6 235.0 122.0 87.1 86.3 86.5
    -O2 -fbranch-target-load-optimize2 158.6 224.2 234.8 122.4 87.1 86.3 86.5
    -O2 -fsched2-use-superblocks 157.8 223.5 234.9 122.3 87.1 86.3 86.5
    -O2 -fweb -frename-registers -funswitch-loops -fforce-addr -fomit-frame-pointer -fprefetch-loop-arrays 176.9 226.0 258.6 131.5 87.1 89.2 88.5
    -O2 -fweb -frename-registers -funswitch-loops -fforce-addr -fomit-frame-pointer -fprefetch-loop-arrays -march=i386 191.9 261.5 299.1 138.3 82.8 84.2 83.0
    -O2 -fweb -frename-registers -funswitch-loops -fforce-addr -fomit-frame-pointer -fprefetch-loop-arrays -march=i586 189.9 260.8 305.8 141.4 87.1 86.7 87.3
    -O2 -fweb -frename-registers -funswitch-loops -fforce-addr -fomit-frame-pointer -fprefetch-loop-arrays -march=i686 190.8 292.8 321.5 162.9 87.1 88.0 88.7
    -O2 -fweb -frename-registers -funswitch-loops -fforce-addr -fomit-frame-pointer -fprefetch-loop-arrays -march=athlon 192.6 282.0 302.1 165.6 87.1 89.8 92.3
    -O2 -fweb -frename-registers -funswitch-loops -fforce-addr -fomit-frame-pointer -fprefetch-loop-arrays -march=athlon-xp 191.7 279.4 302.3 165.6 87.1 90.2 92.3
    -O2 -fweb -frename-registers -funswitch-loops -fforce-addr -fomit-frame-pointer -fprefetch-loop-arrays -march=athlon-xp -mfpmath=387 191.8 279.6 302.1 166.1 87.1 90.2 92.3
    -O2 -fweb -frename-registers -funswitch-loops -fforce-addr -fomit-frame-pointer -fprefetch-loop-arrays -march=athlon-xp -mfpmath=sse 192.2 262.6 301.9 165.6 87.1 91.7 92.3
    -O2 -fweb -frename-registers -funswitch-loops -fforce-addr -fomit-frame-pointer -fprefetch-loop-arrays -march=athlon-xp -mfpmath=sse,387 192.2 257.8 302.3 165.9 87.1 91.0 92.3
    -O2 -fweb -frename-registers -funswitch-loops -fforce-addr -fomit-frame-pointer -fprefetch-loop-arrays -march=athlon-xp -mfpmath=sse,387 -ffast-math 192.5 266.5 296.9 167.7 87.1 89.9 91.3

    PS: Škoda, že ABCLinuxu nedovoluje tag TABLE, tohle se čte blbě...
    19.12.2004 16:58 Jan Grmela | skóre: 45 | blog: Kilo šťávy z lachtana | Brno
    Rozbalit Rozbalit vše Re: narast vykonu
    Co neni, muze byt...lepsi format tabulky mne nenapadl.
    26.10.2004 12:45 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: narast vykonu
    u beznych aplikaci minimalne, ale treba u takoveho video prehravace, kompresoru mp3 jde poznat rozdil mezi AMD K/7 a i386 :-) osobne si kompiluju prave video prehracac, kompresory a jadro.
    Asi před rokem se dostali hackeři na servry Debianu a ukradli jim zdrojové kódy.
    26.10.2004 13:30 nemo
    Rozbalit Rozbalit vše Re: narast vykonu
    Docela znat je MPlayer, Scribus a Sodipodi (zvlaste pri praci s velkymi obrazky, napr. poster 1x1 m)
    26.10.2004 15:53 Jaroslav Kucera | skóre: 10 | Brno
    Rozbalit Rozbalit vše Pentium M
    Jaky je nejvhodnejsi flag pro procesor Intel Pentium M (Banias/Dothan)?
    26.10.2004 18:10 jm
    Rozbalit Rozbalit vše Re: Pentium M
    Kouknete na Gentoo Forums, tam je dostatek silencu, co se tim zabyvaji. :-)

    Založit nové vláknoNahoru

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