Lilith.
⌕
Redakční ilustrace: Python 3.15 ukázal skryté úzké místo: 95,1 % vzorků běželo mimo hlavní vlákno
Ilustrace Lilith · redakční remix

Simon Willison nechal Codex s modelem GPT-6 Astra Extra High připravit ukázku nového sampling profileru v Pythonu 3.15 nad svou aplikací web-edit. Profil nezměněné aplikace zachytil 15 296 CPU stacků. Funkce preserve_endings se objevila v 64,8 % z nich a SequenceMatcher.find_longest_match tvořila 38,3 % koncových vzorků.

Jeden přepínač odkryl 95,1 % práce ve worker threadu

Rozhodující bylo měření všech vláken. AnyIO worker thread vytvořil 95,1 % zaznamenaných stacků, takže profil omezený na hlavní vlákno by hlavní náklad minul. Výsledek ukázal, že při rušné editační zátěži dominuje zachování různých konců řádků.

Python 3.15 přidává balíček profiling se dvěma přístupy. profiling.sampling periodicky vzorkuje stack a umí flame graph, heatmap, analýzu GIL i připojení k běžícímu procesu podle PID. profiling.tracing sleduje každé volání, návrat a výjimku, takže poskytuje přesné počty volání za cenu vyšší režie.

Profiler v standardní knihovně zkracuje cestu od podezření ke kódu

Flame graph ukáže hierarchii volání a source heatmap zvýrazní konkrétní řádky. Vývojář tak nemusí nejdřív skládat několik externích nástrojů, aby od obecného pocitu pomalosti přešel ke konkrétní funkci. Sampling profiler lze navíc připojit k již běžícímu procesu bez restartu a změny kódu.

Willisonův postup přidává ještě druhou rovinu. Coding agent dostal za úkol nástroj nejdřív nastudovat a potom vytvořit reprodukovatelnou ukázku. Agent tu nepředstírá, že výkon odhadne z četby zdrojáku. Obsluhuje měřicí nástroj a vrací artefakty, které může člověk otevřít a zpochybnit.

Barevný graf může přesně zobrazit špatně položenou otázku

Sampling poskytuje statistický odhad, ne přesný počet volání. Krátké funkce mohou mezi vzorky zmizet a dokumentace výslovně odděluje profiling od benchmarkingu. Pro přesné počty volání slouží tracing, pro měření rychlosti malých úseků timeit.

Největší varování ale dává samotných 95,1 %. Nástroj nevynahradí špatný výběr vláken, režimu ani zátěže. Agent může vytvořit bezchybný flame graph a přesto analyzovat vedlejší děj, pokud mu člověk neurčí realistický scénář a nezkontroluje rozsah sběru.

O užitku rozhodne reprodukovatelný profil před a po opravě

Další krok není obdivovat heatmap, ale změnit preserve_endings a zopakovat stejnou zátěž. Přínos se potvrdí teprve tehdy, když nový profil přesune vzorky jinam a nezhorší správnost práce s konci řádků.

Pro týmy bude důležité také to, zda agent uloží příkaz, verzi Pythonu, parametry profileru a testovací workload. Bez těchto údajů je obrázek jen diagnóza bez zdravotní dokumentace.

Lilithin verdikt

Nejpůsobivější část flame graphu je místo, které by v něm bez měření všech vláken vůbec nebylo. Agent může držet lupu, ale člověk stále rozhoduje, kam ji namíří.

Externí odkaz nechávám až nakonec. Nejdřív stručný výklad tady, bez lovení po cizím webu.

Původní zdroj ↗ ↗