Zpět na projekty
TUIX v0.2.0Beta

Naposledy aktualizováno: 2026-05-20

Výkon

TUIX Core je navrženo pro vysokou propustnost. Zkompilované C jádro zajišťuje renderování, kompozici a vstup, zatímco Python vrstva řídí konfiguraci a orchestraci.

Souhrn benchmarků

Benchmarky měřeny na Windows 10, 12th Gen Intel Core i5-12450HX, 24GB RAM.

ScénářPrůměrná latenceOperací/sMax RSS
Start302 µs3,3113.9 MB
Sestavení stromu (10 položek)110 µs9,1263.9 MB
Sestavení stromu (100 položek)104 µs9,6353.9 MB
Sestavení stromu (1000 položek)97 µs10,3094.0 MB
Přerenderování (bez změn)10 µs96,1543.9 MB
Aktualizace obsahu134 µs7,4633.9 MB
Zátěž layoutu (mřížka 10×4)1,142 µs8764.0 MB
Zátěž scrollu (2000 položek)112 µs8,9294.1 MB
Virtuální seznam (100K položek)70 µs14,38818.3 MB

Optimalizace renderování

Delta renderování

Renderer zpracovává pouze řádky, které se mezi snímky změnily. Každý řádek je hashován pomocí FNV-1a na surových pixelech (před kvantizací barev). Nezměněné řádky se přeskočí celé — bez kvantizace, bez SGR sekvencí, bez výstupu.

LUT pro kvantizaci barev

Předpočítaná lookup tabulka o velikosti 128KB mapuje RGB565 (65 536 položek) na nejbližší terminálovou barvu v ANSI16, ANSI256 nebo truecolor. LUT se vytvoří jednou při prvním renderu a poté je párování barev O(1) na pixel.

Seskupování SGR

Po sobě jdoucí pixely se shodnou barvou popředí, pozadí a stylovými příznaky se seskupí do jedné SGR (Select Graphic Rendition) escape sekvence. To snižuje množství escape bajtů emitovaných na řádek.

Výstup po blocích

Vyrenderovaný ANSI výstup se akumuluje v 256KB bufferu a flushuje po blocích. To snižuje počet systémových volání write() a zvyšuje propustnost na Windows i POSIX.

Cache ukazatele scén

Hlavní smyčka cachuje ukazatel na aktivní scénu napříč snímky. Názvy scén jsou internované řetězce porovnávané ukazatelem místo hodnoty, takže vyhledání scény na snímek je O(1).

Paměťový profil

TUIX Core má malé paměťové nároky. Základní RSS při startu je přibližně 3,9 MB. Růst paměti je primárně dán počtem pixelů v aktivních bufferech. Plnohodnotný canvas 120×30 využije přibližně 120 × 30 × sizeof(TuixPixel) bajtů.

Srovnání

TUIX Core bylo benchmarkováno proti několika terminal UI frameworkům napříč jazyky:

FrameworkJazykStrom 1000 položekPřerenderováníMax RSS
TUIX.CorePython/C97 µs10 µs3.9 MB
RatatuiRust125 µs3.2 MB
Bubble TeaGo311 µs11.2 MB
blessedNode.js5,800 µs124 µs152 MB
InkNode.js (React)3,200 µs87 MB
Plné benchmarkyViz BENCHMARKS.md v repozitáři pro detailní výsledky všech 25 scénářů, včetně statistik po snímcích, profilování paměti a měření PTY bajtů.

Spouštění benchmarků

# Full benchmark suite (25 scenarios, outputs JSON + CSV)
python tests/benchmarks/full_benchmark.py

# Micro scene benchmark (command buffer execution speed)
python tests/benchmarks/micro_scene_bench.py

Plný benchmark generuje benchmark.json, benchmark_summary.csv a benchmark_frames.csv. Mikro benchmark měří náklady na provedení command bufferu na objekt v mikrosekundách.