Skip to content

Conversation

@Norbert515
Copy link
Owner

No description provided.

Add 5 Ink (React/TypeScript) benchmark apps for framework comparison:
- 01_static_layout: Baseline render performance test
- 02_counter: Minimal state change benchmark
- 03_scrolling_list: 1000-item virtualized list
- 04_rapid_input: Keystroke-to-render latency test
- 05_dashboard: Stress test with concurrent animations

Each app outputs JSON measurement data to stderr for analysis.
- Add metrics_schema.json for standardized benchmark results
- Add README with setup and methodology documentation
- Add blog draft outline with architecture comparisons
- Add Ink research notes from deep technical analysis
- Update blog post with actual benchmark data:
  - 37x faster startup (0.32ms vs 12.02ms)
  - 5.8x smaller binaries (7.4MB vs 43.1MB)
  - ~6x less memory usage
- Add benchmark results JSON files
- Add benchmark runner scripts
- Clean up worktrees after merge
Frame time analysis using headless terminal runtime:
- Counter: Nocterm 12.5x faster first frame (0.81ms vs 10.19ms)
- Scrolling List: Nocterm 17.7x faster (0.57ms vs 10.0ms)
- Dashboard: Nocterm 27.7x faster (0.50ms vs 13.85ms)
- Interactive frame times comparable (~1-2ms both frameworks)

Blog post rewritten with:
- Personal perspective on why Dart/Flutter patterns work for TUIs
- No verdict language - numbers speak for themselves
- Focus on the Dart ecosystem strengths
- Industry context (OpenAI, Anthropic approaches)
Updated blog post with:
- Detailed methodology explanations for each benchmark section
- 10 samples per test with statistical analysis (mean, median, stddev, p95)
- Actual Nocterm memory measurements (18.9 MB avg vs Ink's 102.4 MB)
- Updated numbers: 32x startup, 5.8x binary size, 5.4x memory

New benchmark results:
- comprehensive_results.json with full statistical breakdown
- Node.js benchmark harness for headless PTY testing
- Frame time measurements for interactive apps

Key findings:
- Startup: Nocterm 0.37ms vs Ink 12.0ms (32x faster)
- Memory: Nocterm 18.9 MB vs Ink 102.4 MB (5.4x less)
- Binary: Nocterm 7.4 MB vs Ink 43.1 MB (5.8x smaller)
- Interactive: Both achieve smooth 60fps after startup
New benchmark (06_max_fps) measures raw frame rendering speed:
- Nocterm: 137µs mean (7,161 FPS) with breakdown:
  - Build: 32µs, Layout: 31µs, Paint: 54µs, Diff+Flush: ~20µs
- Ink: 115µs mean (8,655 FPS)

Both frameworks render 100x faster than needed for 60fps.
Updated blog post with frame time methodology and results.
- Rewrite blog post with balanced comparison (Ink wins frame time 13%)
- Add "When to Choose Which" and "Benchmark Limitations" sections
- Update binary size comparison to use Bun standalone (56MB vs 7.4MB)
- Fix technical inaccuracies (Yoga uses native bindings, not WASM)
- Add Widget vs Component terminology clarification
- Include 10-run frame time benchmark results showing variance
- Add benchmark automation scripts for reproducibility

Key results (10 runs):
- Nocterm: 7,242 FPS avg, 135µs mean, ±1% variance
- Ink: 8,193 FPS avg, 122µs mean, ±10% variance
@cloudflare-workers-and-pages
Copy link

cloudflare-workers-and-pages bot commented Jan 31, 2026

Deploying nocterm with  Cloudflare Pages  Cloudflare Pages

Latest commit: 90da47b
Status: ✅  Deploy successful!
Preview URL: https://63aa92ae.nocterm-afg.pages.dev
Branch Preview URL: https://research-ink-vs-nocterm-benc.nocterm-afg.pages.dev

View logs

Remove node harness, stderr logs, and intermediate result files
that shouldn't be tracked in version control.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant