Un cliente escrito en TSX, justo al lado de Rust
En NSH solo el código de tu app es JS. El grafo reactivo, el renderizador, el layout y todos los módulos son Rust. Las apps en TSX y en Rust comparten el mismo pipeline de ejecución nativo.
- 120 FPS
- 22 sparklines en vivo, un libro de órdenes y una cinta actualizándose a la vez, frame p95 por debajo de 4 ms
- ~0.1 ms
- Arranque del motor (75–155 µs)
- ~1 ms
- Primer fotograma de una app contador
- ~0.12 ms
- Un toque, del evento al commit
- < 1 KB
- El código de app de un hello world
- ~1.1 MB
- Descarga de una app TSX en la web (runtime de Wasm)
Apps pequeñas medidas: unos pocos MB por encima de la ventana básica del sistema | TSX | Rust | Ventana básica del sistema |
|---|
| Huella de memoria, macOS | ~20 MB | ~19 MB | ~17 MB |
|---|
| Memoria privada sucia, Linux (GTK, GL) | ~48 MB | ~44 MB | ~38 MB |
|---|
| Por encima de la ventana del sistema, macOS / Linux | +3 / +9 MB | +2 / +5 MB | |
|---|
| Conjunto de trabajo privado, Windows | ~15 MB | ~14 MB | |
|---|
Tamaño en cada plataforma: el hello world de nsh init | Ejecutable TSX | Paquete TSX | Ejecutable Rust | Paquete Rust |
|---|
| macOS (Apple silicon) | 19.8 MB | 9.5 MB | 12.4 MB | 6.0 MB |
|---|
| Linux (x86_64) | 25.7 MB | 11.6 MB | 16.5 MB | 7.5 MB |
|---|
| Windows (x86_64) | 28.6 MB | 12.4 MB | 15.0 MB | 6.7 MB |
|---|
| Web | — | ~1.1 MB de descarga | — | — |
|---|
Compilaciones release. Memoria en reposo: huella en macOS en un Apple M3 (la app contador y la plantilla de Rust a 1200 × 800; la ventana del sistema contiene una etiqueta a 480 × 640); memoria privada sucia en Linux en una NVIDIA RTX 3060 Ti (las plantillas TSX y Rust de nsh init y una ventana GTK con una etiqueta, todas a 480 × 640); conjunto de trabajo privado en Windows. La medición de cada plataforma, con RSS y USS, está en el informe. Tamaños: compilaciones release de nsh package, con optimización en tiempo de enlace y símbolos eliminados; el ejecutable TSX incluye el runtime QuickJS y el código de la app ocupa menos de 1 KB; el paquete es el .app comprimido en zip en macOS, el .tar.gz en Linux y el .zip en Windows; en la web, lo que descarga el navegador, runtime y app. El informe completo de rendimiento