Update pro článek Úvod do GNU =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Dokončené není nic -- H. F. Amiel Tak asi největší změna je, že jsem celý článek přepsal do úhledné češtiny a dal na www.gnu.cz. Ale jsou i další: Ve článku o GCC (pokud nevíte co GCC je, vězte že to je jeden z nejlepších překladačů jazyka C, Pascal a další pro skoro všechny systémy) jsem si stěžoval, že už dlouho nevyšla nová verze. Nebyl jsem sám a tak skupina programátorů z Cygnusu začala pracovat na nové verzi oddělené od budoucí 2.8.0. Mělo by to být GCC 3.0. Má krycí jméno EGCS. Už teď má opravdu hodně změn - nový scheduler od IBM (Haifa), který rozumí lépe superskalárním procesorům (pentia a výše), lepší unrollování smyček, podporu pentia a pentiapro, novou podporu C++ včetně fungujících templates atd. Proto jsem udělal nové testy na mé mandelbrotčí smyčce: +------------+---------------------------------------+---------------------+ |Kompilátor | přepínače | Smyček za sekundu | +------------+---------------------------------------+---------------------+ |pgcc2.7.2p | -O6 -ffast-math -mpentium -frisc | 5 464 480 | | | -fomit-frame-pointer -funroll-loops | | | | -fopt-reg-use -frisc | | |egcs970828 | -O3 -ffast-math -mpentium | 5 405 405 | | | -fomit-frame-pointer -funroll-loops | | |egcs970828 | -O3 -ffast-math -m486 | 4 807 692 | | | -fomit-frame-pointer -funroll-loops | | |gcc2.6.3 | -O3 -ffast-math -m486 | 4 233 641 | | | -fomit-frame-pointer -funroll-loops | | |gcc2.7.2.1 | -O3 -ffast-math -m486 | 4 149 377 | | | -fomit-frame-pointer -funroll-loops | | | | | | |gpc2.0 | -O3 -ffast-math -m486 | 3 433 962 | | | -fomit-frame-pointer -funroll-loops | | |vc5.0 | (optimalizace na max) | 3 060 908 | |wc10.0 | -7 -5 -ol -ol+ -om -op -or -ot -fp5 | 2 222 222 | | | -fpi87 | | |wc10.0 | -5 -7 | 2 217 249 | |delphi2.0 | | 1 807 288 | |plan9 | (v IDE-586,speed+size optim.) | 1 623 376 | |vc1.0 | (v IDE-586,speed+size optim.) | 1 531 393 | |bc4.5 | (v IDE-486,fastest executable) | 1 455 604 | |bc3.1 | (v IDE-386,fastest executable) | 1 433 070 | |gcc2.7.2.1 | (bez optimalizací) | 1 281 348 | |gpc2.0 | (bez optimalizací) | 1 109 756 | |bp7.0 | | 901 713 | |tc2.0 | -1 -f87 -O -r -Z -G -a -mt | 846 511 | |bc4.0 | (v IDE-486,speed optimizations) | 755 857 | |bc2.0 | | 716 535 | |bc2.0 | -G -O -2 -Z -r | 716 535 | |tc2.0 | | 546 546 | |bc4.0 | (v IDE-486,speed+size optim.) | -3.6676456... | +------------+---------------------------------------+---------------------+ Testy ve floating point verzi Pgcc je GCC založené na EGCS s některými patchi navíc, takže je celkem nestabilní ale kompiluje o něco málo víc. Wc je Watkom C, bc je borland C, vc je Visual C++ (na celém testu mě nejvíc mrzí, že se umístilo před watcomem), gcc je GNU C, egcs je nová verze GCC, GPC je GNU Pascal compiler. Vyšší čísla jsou lepší. +------------+---------------------------------------+---------------------+ |Kompilátor | přepínače | Smyček za sekundu | +------------+---------------------------------------+---------------------+ |pgcc2.7.2p | -O6 -ffast-math -mpentium -frisc | 3 464 480 | | | -fomit-frame-pointer -funroll-loops | | | | -fopt-reg-use -frisc | | |egcs970828 | -O3 -ffast-math -mpentium | 3 311 258 | | | -fomit-frame-pointer -funroll-loops | | |gcc2.7.2.1 | -O3 -ffast-math -m486 | 3 250 000 | | | -fomit-frame pointer -funroll-loops | | |wc10.0 | -fpi87 -fp5 -5 -7 -ol -ol+ -om -on | 3 246 753 | | | -or -ot | | |wc10.0 | -5 -7 | 3 194 888 | |plan9 | | 2 973 176 | |gpc2.0 | -O3 -ffast-math -fstrength reduce | 2 888 888 | | | -fomit-frame pointer -funroll-loops | | |gcc2.7.2.1 | (bez optimalizace) | 2 394 736 | |gpc2.0 | (bez optimalizace) | 2 219 512 | |bc2.0 | -G -O -2 -Z -r | 2 166 666 | |bp7.0 | | 1 956 947 | |tc2.0 | -1 -O -r -G -Z -a -mt | 892 156 | |tc2.0 | | 846 511 | +------------+---------------------------------------+---------------------+ Testy v integer verzi výheň