Zde si předvedeme efektivní programovací techniky.

Asymptoticky rychlejším algoritmem zrychlíme program nejvíce.

Uvedeme i praktické informace, kterými program zrychlíme 2krát, 3krát, ale někdy i 10krát.

Možností je několik. Nejprve je ale potřeba zjistit, ve které části programu strávíme nejvíce času. Tím zjistíme, která část je úzkým hrdlem (bottle neck), a tu budeme zrychlovat. Pokud budeme zrychlovat část, ve které výpočet stráví jen 2% celkového času, tak si celkově moc nepomůžeme. Akorát ztratíme spoustu času programováním úprav. Lepší je se zaměřit na proceduru, ve které strávíme 80% celkového času.1

Zjistit, ve kterých funkcích strávíme nejvíce času, je dnes velmi jednoduché. Nemusíte nic programovat. Stačí použít nástroj, který se jmenuje profiler. Bývá součástí vývojového prostředí. Spustíte profiler společně se svým programem a rovnou sledujete přehledné statistiky, kolikrát byla spuštěna která funkce a kolik času jste v ní strávili.

Zlaté pravidlo pro optimalizace kódu zní: “Hrajte si s tím, vyzkoušejte všechno možné, porovnejte to a nakonec vyberte to nejlepší řešení.” Raději ještě jednou zopakujeme nejdůležitější myšlenku celé kapitoly: “Je potřeba mít jasno v tom, které části programu má smysl optimalizovat a které ne.”

Největších zrychlení dosáhneme lepším algoritmem. Teprve nakonec, když už lepší algoritmus nevymyslíme, nebo když si dokonce dokážeme, že lepší algoritmus neexistuje, má smysl se vrhnout na optimalizaci zdrojového kódu a optimalizaci programu pro hardware a operační systém.

Upozornění: kusy kódu algoritmů v této knize nejsou vždy ty nejefektivnější a nejelegantnější. Je to z toho důvodu, že cílem této knihy je hlavně jednoduše a srozumitelně prezentovat grafové algoritmy. Jejich elegantní implementace už hodně závisí na konkrétním programovacím jazyce.