← všechny projektyvýzkum

Example API

Jedno CRUD API s JWT, napsané desetkrát v .NET, Pythonu a TypeScriptu. Všechny verze sdílí jeden OpenAPI kontrakt a měří se za stejných podmínek.

.NETC#PythonTypeScriptOpenAPIk6Docker
petrvalik.github.io/ExampleApi
Živý dashboard výsledků — vyberete implementaci, prohlédnete si ji a uvidíte, co který přístup stojí

Architektura

Jeden OpenAPI kontrakt→10 implementací→Testy zvenčí (black-box)→Zátěž přes k6→Dashboard výsledků

Interaktivní benchmark

.NETTypeScriptPython◆ nejrychlejší
Propustnost na 4 CPU jádrech — .NET škáluje, Node/Python stagnují (req/s). · medián 3 lokálních k6 běhů (docs/comparison.md v repu); 4-core hodnota FastAPI je jeho dokumentované single-worker plató.

Otázka

Má architektura — Minimal API, MVC, Clean, MediatR, Vertical Slice — vůbec vliv na výkon? A jak si jednotlivé runtimy stojí na stejné zátěži, a kolik kódu navíc to stojí?

Jak to začalorešerše

Napsal jsem jeden OpenAPI kontrakt a implementoval ho desetkrát: pětkrát v .NET, třikrát v Pythonu a dvakrát v TypeScriptu. Sada testů zvenčí nejdřív ověří, že se všechny verze chovají stejně, a teprve pak se měří.

Rozhodnutí

Férové měření v k6: stejná zátěž, stejný hardware, zamčené verze, zahřátí, měření a dochlazení. Ukazuju celé rozložení latence (p50, p95, p99) i rozptyl, ne jen průměr.

Co z toho vyšlo

V rámci .NET architektura výkon skoro neovlivní (rozdíl kolem 20 %). Mezi runtimy rozhoduje, jak pracují se souběhem: vícevláknový .NET na čtyřech jádrech zrychlí asi dvanáctkrát, kdežto Node a FastAPI v jednom procesu narazí na strop. Množství kódu se pohybovalo od 1 souboru a 382 řádků po 48 souborů a 1 823 řádků.

Ukázky

Živý dashboard výsledků — vyberete implementaci, prohlédnete si ji a uvidíte, co který přístup stojí

V číslech

10
implementací
~12×
.NET na 4 jádrech
1744→329
req/s na 1 CPU
4
nalezené chyby

Historie

  1. červenec 2026spuštěnoZveřejněný dashboard, který porovnává deset implementací.