-
Notifications
You must be signed in to change notification settings - Fork 16
Research/ink vs nocterm benchmark #42
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Draft
Norbert515
wants to merge
10
commits into
main
Choose a base branch
from
research/ink-vs-nocterm-benchmark
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Draft
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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
Deploying nocterm with
|
| 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 |
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
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
No description provided.