optimalizace

Od Petr Zemek, 2009-09-24

Při čtení "Dračí knihy" (Dragon book) jsem narazil u jednoho příkladu ruční implementace konečného automatu na poznámku, že nezáleží na pořadí uvedených case větví v příkazu switch, protože překladač to optimalizuje, a tudíž, i když tu nejméně pravděpodobnou variantu dáme na začátek, tak to nebude mít na výkon žádný vliv. Co se týče nezávislosti na pořadí (mimo speciální případy, např. vynechaný break), tak v jazycích C a C++ je to běžně známá záležitost, ale mě zaujala ona poznámka o optimalizaci a nedalo mi to, abych se nepřesvědčil, jak tomu ve skutečnosti je. Se svými výsledky, co se týče překladače gcc, bych se chtěl podělit v tomto příspěvku.