Zpět na projekty
TUIX v0.4Beta

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. Benchmark sada ve v0.4 rozšiřuje pokrytí o start, tvorbu stromu, rerenderování, virtuální seznamy a plné UI workloady.

Souhrn benchmarků

Metadata posledního běhu: Node v22.19.0 na Windows_NT 10.0.26200 (win32 x64), 12th Gen Intel(R) Core(TM) i5-12450HX (12 jader), RAM 24352MB.

ScénářPrůměrná latenceOperací/sMax RSS
Start311 µs3.2K4.0 MB
Tvorba stromu (1 000 položek)126 µs7.9K4.0 MB
Rerender19 µs54.0K4.1 MB
Virtuální seznam (100 000 položek)31 µs32.2K4.1 MB
Plné terminálové UI (120×40, 24 služeb)61 µs16.4K4.6 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.