Techniky optimalizace softwaru

Při optimalizaci softwaru používám především následující techniky. Některé jsou obecně použitelné, některé se hodí pro určité typy úloh. Typicky dosahuji celkového zvýšení výkonu softwaru o desítky až tisíce procent.

Použití efektivních algoritmů

Stejnou věc lze dělat několika způsoby, přičemž některé způsoby jsou mnohem efektivnější než jiné. Nahrazením kusu kódu jeho efektivnější variantou lze dosáhnout výrazného zvýšení výkonu.

Použití vhodných datových struktur

Pro určité úkoly jsou vhodné některé datové struktury. Velkého zrychlení softwaru je dosaženo nahrazením nevhodných datových struktur datovými strukturami, které jsou pro jednotlivé podúlohy nejvhodnější.

Efektivní použití STL

Při používání STL (Standard Template Library) je několik zásad, jak učinit kód efektivnějším. Jedná se o jednoduché úpravy, které mají relativně velký efekt.

Paralelní zpracování

Některé úlohy lze zpracovávat paralelně ve více vláknech na několika procesorech. Většinou je možné dosáhnout téměř zrychlení úměrného počtu procesorů.

Výpočty na grafických kartách

Moderní grafické procesory (GPU) mohou vykonávat libovolný kód. Obsahují stovky až tisíce výpočetních jader, nabízejí tedy masivní paralelní zpracování. Ideální úkol pro grafickou kartu je takový, při kterém se dělá stejný výpočet nad ohromným množstvím dat.

Efektivní použití C++

Při používání C++ lze použitím několika jednoduchých technik, jako je např. předávání objektů referencí místo hodnotou, dosáhnout nezanedbatelného zrychlení.