Systém drhne, když dat přibývá
Algoritmus který fungoval na tisíci záznamech se zadrhl na milionu. Lineární vyhledávání v kolekci, O(n²) smyčky, chybějící indexy — přesně tohle profilér ukáže za minuty.
Pomalý .NET systém není přirozený stav věcí. Profilujeme, najdeme skutečný bottleneck a opravíme ho — bez riskantního přepisování od nuly.
Většina legacy výkonu se dá zachránit. Otázka je kde přesně a jak — ne jestli.
Algoritmus který fungoval na tisíci záznamech se zadrhl na milionu. Lineární vyhledávání v kolekci, O(n²) smyčky, chybějící indexy — přesně tohle profilér ukáže za minuty.
Dá. Většina výkonnostních problémů sedí na pár místech: špatná datová struktura, chybějící cache, jeden SQL dotaz který tahá celou tabulku. Ty se opravit dají.
Přepis od nuly trvá roky, stojí víc a většinou přenese původní problémy do nového kódu. Nejdřív hledáme kde opravit — přepis doporučíme jen když to opravdu dává smysl.
Nejdřív data, pak kód. Každé rozhodnutí stojí na naměřených číslech, ne na odhadu.
Profiling (dotnet-trace, PerfView, SQL Profiler) ukáže kde čas skutečně mizí. Bez dat neopravujeme nic — jinak jen přesuneme problém.
HashSet místo Listu pro O(1) lookup, Dictionary pro opakované vyhledávání podle klíče. Jedna změna struktury může znamenat 10× rychlejší průchod miliony záznamů.
Co se nemění každý request, nemusí se počítat každý request. Redis nebo in-memory cache na správném místě eliminuje zbytečnou zátěž databáze i CPU.
N+1 dotazy, chybějící indexy, SELECT * přes miliony řádků — SQL Profiler je odhalí a my je opravíme. Atlas Copco: z 15 000 na 3 000 řádků SQL.
Zpracování záznamů po jednom v cyklu nahradíme batch operacemi nebo asynchronním event-driven přístupem. Výsledek: zlomek původního CPU a wall time.
Hotfix na vrcholu špatného algoritmu není oprava. Refaktorujeme tam kde problém skutečně sedí — s testy které ověří, že jsme nic nerozbili.
Velká česká banka: generování smluv procházelo miliony záznamů s lineárním vyhledáváním v kolekcích. Nahradili jsme Listy za HashSet/Dictionary a přidali batch processing. Výsledek: z 2+ hodin na 3 minuty (40×), CPU z 95 % na 15 %. Atlas Copco: SAP pipeline zkrácena z 15 000 na 3 000 řádků SQL, přechod na event-driven přístup — ~80 % méně kódu, stejná business logika.
Napište nám co konkrétně drhne — jaký systém, jaká operace, jaká čísla vidíte. Odpovíme do 24 hodin s odhadem co jsme schopni udělat.
Popsat co je pomalé →