Byla vydána verze 4.0 multiplatformního integrovaného vývojového prostředí (IDE) pro rychlý vývoj aplikaci (RAD) ve Free Pascalu Lazarus (Wikipedie). Přehled novinek v poznámkách k vydání. Využíván je Free Pascal Compiler (FPC) 3.2.2.
Podpora Windows 10 končí 14. října 2025. Připravovaná kampaň Konec desítek (End of 10) může uživatelům pomoci s přechodem na Linux.
Již tuto středu proběhne 50. Virtuální Bastlírna, tedy dle římského číslování L. Bude L značit velikost, tedy více diskutujících než obvykle, či délku, neboť díky svátku lze diskutovat dlouho do noci? Bude i příští Virtuální Bastlírna virtuální nebo reálná? Nejen to se dozvíte, když dorazíte na diskuzní večer o elektronice, softwaru, ale technice obecně, který si můžete představit jako virtuální posezení u piva spojené s učenou
… více »Český statistický úřad rozšiřuje Statistický geoportál o Datový portál GIS s otevřenými geografickými daty. Ten umožňuje stahování datových sad podle potřeb uživatelů i jejich prohlížení v mapě a přináší nové možnosti v oblasti analýzy a využití statistických dat.
Kevin Lin zkouší využívat chytré brýle Mentra při hraní na piano. Vytváří aplikaci AugmentedChords, pomocí které si do brýlí posílá notový zápis (YouTube). Uvnitř brýlí běží AugmentOS (GitHub), tj. open source operační systém pro chytré brýle.
Jarní konference EurOpen.cz 2025 proběhne 26. až 28. května v Brandýse nad Labem. Věnována je programovacím jazykům, vývoji softwaru a programovacím technikám.
Na čem aktuálně pracují vývojáři GNOME a KDE Plasma? Pravidelný přehled novinek v Týden v GNOME a Týden v KDE Plasma.
Před 25 lety zaplavil celý svět virus ILOVEYOU. Virus se šířil e-mailem, jenž nesl přílohu s názvem I Love You. Příjemci, zvědavému, kdo se do něj zamiloval, pak program spuštěný otevřením přílohy načetl z adresáře e-mailové adresy a na ně pak „milostný vzkaz“ poslal dál. Škody vznikaly jak zahlcením e-mailových serverů, tak i druhou činností viru, kterou bylo přemazání souborů uložených v napadeném počítači.
Byla vydána nová major verze 5.0.0 svobodného multiplatformního nástroje BleachBit (GitHub, Wikipedie) určeného především k efektivnímu čištění disku od nepotřebných souborů.
Premennú prostredia CFLAGS
používa gcc
pri
kompilácii zdrojových kódov v jazyku C. V Gentoo túto premennú nastavujeme v súbore
/etc/make.conf
a Portage ju pred kompiláciou balíčka prečíta a
nastaví. Premenná CXXFLAGS
funguje rovnako, ale pre jazyk
C++.
Ak nemáte problém s diskovým priestorom, ani s časom potrebným na
kompiláciu, môžete bezpečne použiť nasledujúcu hodnotu CFLAGS
a CXXFLAGS
:
CFLAGS="-O3 -fomit-frame-pointer -pipe"
CXXFLAGS="$(CFLAGS)"
Výsledný program však nebude ušitý na mieru vášmu procesoru a bude využívať iba inštrukčnú sadu procesora i386 (samozrejme ak vlastníte procesor založený na tejto architektúre).
Najprv by sme si mali povedať pár slov o tom, ako pracuje GCC. Ako už možno viete, GCC obsahuje viac kompilátorov naraz - kompilátory pre jazyky C, C++, Objective C, Fortran a Javu, ale aj ďalšie. Kompilátor GCC sa skladá z dvoch častí - frontend a backend.
Každý jazyk má vlastný frontend. Frontend načíta (preparsuje) a spracuje samotné zdrojové kódy. Výstupom frontendu je reprezentácia zdrojového kódu v jazyku RTL (Register Transfer Language). Dá sa povedať, že RTL je abstraktný štruktúrovaný assembler. Je to veľmi všeobecný a zložitý jazyk zároveň, preto nemá zmysel ho používať pre bežné programovanie.
Strom RTL sa pri kompilácii nachádza v pamäti len v binárnej forme. V binárnej forme vstupuje do backendu kompilátora GCC, ktorý je všeobecný pre celý kompilátor. Backend generuje z RTL stromu kód assemblera pre určený procesor. Backend tiež vykonáva optimalizácie nad RTL stromom a aj pri generovaní assemblera.
Backend vie vykonať niekoľko desiatok rôznych optimalizácií a nie všetky sú vhodné v každej situácii. Preto sú rôzne druhy optimalizácií roztriedené do skupín, aby ich bolo možné jednoducho zapínať - o chvíľku si o nich povieme.
Zostali vám nezodpovedané otázky? Ak vás zaujíma, ako vyzerá RTL, skúste
skompilovať jednoduchý program s parametrom -dr
:
gcc -dr zvyšné parametre
Ak chcete vedieť, ako prebiehajú rôzne optimalizácie v backende kompilátora GCC, prečítajte si článok The GNU Instruction Scheduler z roku 1989 (podstata GCC sa nezmenila).
Najdôležitejší je parameter optimalizácie -Ox
.
Určuje, ktorú skupinu optimalizácií chceme pri kompilovaní použiť. Písmeno
x treba nahradiť číslom, alebo písmenom želanej skupiny. Popis
jednotlivých skupín optimalizácií:
-O0
-O1
-O2
-O3
-Os
-O2
, ktoré nezväčšia veľkosť výsledného programu a pridá
ďalšie optimalizácie pre veľkosť výsledku. Rýchlosť a nároky na pamäť sú
podobné, ako pri -O2
.Ak špecifikujete viac parametrov -Ox
naraz, použije
sa iba posledný.
Parameter -fomit-frame-pointer
znemožní debugovanie
(používateľ to nepotrebuje) a zmenší veľkosť binárky.
Parameter -pipe
urýchli kompiláciu, pretože
gcc
nebude medzivýsledky ukladať na disk, ale ponechá ich v
pamäti.
Každý typ procesora má vlastnú inštrukčnú sadu - inštrukcia je jeden úkon, ktorý procesor dokáže vykonať. V assembleri nepoužívame príkazy, ale priamo inštrukcie procesora. Z toho vyplýva, že program v assembleri je závislý na procesore, pre ktorý je určený a nedá sa spustiť na inom.
Našťastie nové procesory poznajú všetky inštrukcie starších procesorov a inštrukčnú sadu len rozširujú o ďalšie inštrukcie. Túto vlastnosť majú procesory z radu Intel x86 - procesory bežných PC (i386, i486, Pentium atď.).
Ako som už povedal, kompilátor GCC generuje z RTL kódu kód assembleru a potrebuje teda vedieť, pre ktorý procesor má assembler vygenerovať. Na platforme x86 generuje predvolene pre procesor i386 a ten je možné použiť na ktoromkoľvek vyššom procesore.
Parameter -march=architektúra
určuje inštrukčnú sadu
procesora, na ktorom má program fungovať. Ak chceme, aby program fungoval
aj na starších procesoroch, ale chceme ho optimalizovať pre svoj procesor,
môžeme použiť jeden z parametrov:
-mcpu=architektúra
(gcc verzie 3.3 a nižšie)-mtune=architektúra
(gcc verzie 3.4 a vyššie)(Verziu gcc zistíme pomocou prikazu: gcc -v
.)
Za slovo architektúra dosaďte označenie procesora, pre ktorý kompilujete. Označenia všetkých procesorov nájdete v manuálovej stránke GCC. Ak kompilujete pre procesor typu x86, hľadajte sekciu Intel 386 and AMD x86-64 Options (jednoduchšie je nechať vyhľadať na manuálovej stránke reťazec athlon).
LDFLAGS používa linker (program, ktorý spája časti zdrojových kódov do spustiteľného súboru, alebo knižnice). Bezpečná hodnota premennej LDFLAGS je:
LDFLAGS="-Wl,-O1"
Ak chcete dostať zo systému maximum a ste ochotný trochu riskovať:
LDFLAGS="-Wl,-O1 -Wl,--sort-common -z -combreloc -Wl, \
--enable-new-dtags -Wl,--relax"
V niektorých prípadoch sa pri kompilácii glibc
môžu
vyskytnúť problémy. Je lepšie nepoužívať v hodnote LDFLAGS
parameter -Wl,--relax
:
LDFLAGS="-Wl,-O1 -Wl,--sort-common -z -combreloc
-Wl,--enable-new-dtags"
Problémy pre kompilácii robia aj OpenOffice.org
a
GStreamer
. Tu sa odporúča radikálne riešenie - nepoužívať
žiadnu hodnotu LDFLAGS
:
LDFLAGS=""
V týchto špeciálnych prípadoch si môžete usporiť námahu s editovaním
súboru /etc/make.conf
a premenné určiť priamo z príkazového
riadku:
# LDFLAGS="" emerge gstreamer
# LDFLAGS="" emerge openoffice
Nástroje: Tisk bez diskuse
Tiskni
Sdílej:
-march
ktere pouzivaji bezne distribuce misto -mcpu
. Existuji "objektivni testy" mezi temito rezimy?
$ mplayer MPlayer 1.0pre7-4.0.1 (C) 2000-2005 MPlayer Team CPU: Intel Pentium M Banias (Family: 6, Stepping: 5) Detected cache-line size is 64 bytes CPUflags: MMX: 1 MMX2: 1 3DNow: 0 3DNow2: 0 SSE: 1 SSE2: 1 Compiled with runtime CPU detection - WARNING - this is not optimal!... no nezdá se mi, že by v mojí binární distribuci byl mplayer zkompilován zcela bez optimalizací
No mě se zase zdá, že to, co tady vidíme, je jen detekce procesoru.ovšem výsledkem této detekce se pak mplayer řídí a používá kód optimalizovaný pro dané možnosti ... což jaksi vyvrací názor, který se snaží článek vsugerovat, a to že binární distribuce optimalizace nepoužívají ...
... binární distribuce optimalizace nepoužívají ...
To som nikdy nepovedal! Povedal som, že binárne distribúcie nie sú prispôsobené každému procesoru na mieru, ale len pre nejakého spoločného predchodcu väčšiny procesorov.
A tento príklad je zmätočný, pretože sa týka iba jedného programu (mplayer) a nie celej distribúcie.
ano, takto doslovně ne, na druhou stranu já jsem neřekl, že jsi napsal přímo toto, takže mi taky taky nepodsouvej něco, co jsem neřekl! inkriminovaná věta zní: "Pretože binárne balíky nie sú optimalizované pre váš procesor a sú badateľne pomalšie." mezi "přebásněním" slov "nie sú optimalizované pre váš procesor" na "optimalizace nepoužívají" je z významového hlediska pouze jediný rozdíl, a to že jsem si dovolil zobecnit "ne pro váš procesor" na "pro žádný procesor", jelikož sjednocení množin {váš procesor} v případě čtenářů ábíčka zahrnuje nejspíš téměř všechny architektury, na kterých Linux běhá - pokud s tím nesouhlasíš, měl bys dokázat, že průnik množin {všechny modely procesorů, pro které jsou některé balíky v různých binárních distribucích optimalizovány} a {všechny modely procesorů, na kterých čtenáři provozují Linux} je prázdný... binární distribuce optimalizace nepoužívají ...To som nikdy nepovedal!
Povedal som, že binárne distribúcie nie sú prispôsobené každému procesoru na mieru, ale len pre nejakého spoločného predchodcu väčšiny procesorov.kde se toto tvrzení v článku vyskytuje?
A tento príklad je zmätočný, pretože sa týka iba jedného programu (mplayer) a nie celej distribúcie.zmatečná je jedině tvoje reakce, kolega J, na kterého jsem reagoval, psal o tom, že optimalizace má smysl u jednotlivých programů a uvedl: "Vyplati se to pro veci jako trebas mplayer.", v dané souvislosti je tedy nesmysl mluvit o celé distribuci
Compiled with runtime CPU detection - WARNING - this is not optimal!
No, nezda se ze by tady nekdo umel cist.
No, nezda se ze by tady nekdo umel cist.ok, až se to naučíš, tak začni od článku a pokračuj mojí první reakcí, pak třeba pochopíš, proč jsem na tvoji zmínku o mplayeru reagoval takto (případně si přečti ještě moji odpověď lzapovi)
$ mplayer MPlayer dev-CVS-060102-08:04-3.4.5 (C) 2000-2005 MPlayer Team CPU: Advanced Micro Devices Athlon 64 Newcastle,Winchester,San Diego,Venice; Sempron Palermo (Family: 15, Stepping: 0) CPUflags: MMX: 1 MMX2: 1 3DNow: 1 3DNow2: 1 SSE: 1 SSE2: 1 Přeloženo pro CPU x86 s rozšířeními: MMX MMX2 3DNow 3DNowEx SSE SSE2
Keep in mind that -O3 enables optimizations that generally make code worse, not better. Use it only if you know it will improve your code.A občas sa stane, že kvôli tomu niečo padne. V každom prípade použitie kompilátoru od Intelu má omnoho lepší efekt :)
Ok, priznávam, že -O3
nemá vo väčšine prípadov tie najlepšie výsledky, ale aj tak sú tie najhoršie prípady takmer rovnaké ako pri -O2
(vyvracajúci dôkaz ocením).
Ja som nepovedal, že --omit-frame-pointer
znemožní debugovanie na všetkých platformách.
Vyplati se -O3 nebo -Os? Zatim pouzivam -O3, ale možná by bylo vhodnějšíByly doby, kdy jsem nadsene kompiloval s -O3. Od te doby, co jsem redukoval na -02, vyrazne klesl pocet komplikaci pri kompilacich (de facto na 0). Jineho efektu si nejsem vedom. Myslim, ze je to i ve smyslu doporuceni vyvojaru Gentoo, viz prispevek vyse.
# MAKEOPTS provides extra options that may be passed to 'make' when a # program is compiled. Presently the only use is for specifying # the number of parallel makes (-j) to perform. The suggested number # for parallel makes is CPUs+1. #MAKEOPTS="-j2"Zdroj: /etc/make.conf.example
Bežne sa odporúča použiť hodnotu: počet procesorov + 1To je pro másla 8-)