|
1 | 1 | ## Benchmark Results |
2 | 2 |
|
3 | | -**Platform:** darwin arm64 | **Runtime:** Bun 1.3.10 | **Date:** 2026-02-13 |
| 3 | +**Platform:** darwin arm64 | **Runtime:** Bun 1.3.11 | **Date:** 2026-03-20 |
4 | 4 |
|
5 | 5 | ### In-Process API — Cached |
6 | 6 |
|
7 | 7 | _Smart caching (hash check + cache hit) for watch mode, incremental builds, and CI._ |
8 | 8 |
|
9 | | -| Tool | Small (~50 lines) | Medium (~100 lines) | Large (~330 lines) | XLarge (~1050 lines) | XXLarge (~2000 lines) | Huge (~5000 lines) | |
10 | | -|------|------|------|------|------|------|------| |
11 | | -| **dtsx (cached)** | 24.3 µs _(3.4x)_ | 19.3 µs _(2.3x)_ | 62.4 µs _(2.6x)_ | **96.5 µs** | 254.9 µs _(1.1x)_ | 578.0 µs _(1.0x)_ | |
12 | | -| zig-dtsx | **7.2 µs** | **8.4 µs** | **24.4 µs** | 159.2 µs _(1.6x)_ | **223.8 µs** | **563.9 µs** | |
13 | | -| oxc-transform | 8.3 µs _(1.1x)_ | 23.5 µs _(2.8x)_ | 93.0 µs _(3.8x)_ | 560.5 µs _(5.8x)_ | 390.0 µs _(1.7x)_ | 1.42 ms _(2.5x)_ | |
14 | | -| tsc | 1.01 ms _(140.3x)_ | 1.26 ms _(149.8x)_ | 3.22 ms _(132.3x)_ | 5.90 ms _(61.1x)_ | 8.96 ms _(40.0x)_ | 18.11 ms _(32.1x)_ | |
| 9 | +| Tool | Small (~50 lines) | Medium (~100 lines) | Large (~330 lines) | XLarge (~1050 lines) | |
| 10 | +|------|------|------|------|------| |
| 11 | +| **dtsx (cached)** | **97.81 ns** | **162.55 ns** | **376.39 ns** | **1.43 µs** | |
| 12 | +| zig-dtsx | 3.43 µs _(35.0x)_ | 7.16 µs _(44.0x)_ | 22.00 µs _(58.5x)_ | 147.21 µs _(103.0x)_ | |
| 13 | +| oxc-transform | 7.35 µs _(75.1x)_ | 22.66 µs _(139.4x)_ | 85.77 µs _(227.9x)_ | 558.72 µs _(390.7x)_ | |
| 14 | +| tsc | 236.82 µs _(2421x)_ | 463.06 µs _(2849x)_ | 1.53 ms _(4065x)_ | 4.66 ms _(3259x)_ | |
15 | 15 |
|
16 | 16 | ### In-Process API — No Cache |
17 | 17 |
|
18 | 18 | _Raw single-transform comparison (cache cleared every iteration)._ |
19 | 19 |
|
20 | | -| Tool | Small (~50 lines) | Medium (~100 lines) | Large (~330 lines) | XLarge (~1050 lines) | XXLarge (~2000 lines) | Huge (~5000 lines) | |
21 | | -|------|------|------|------|------|------|------| |
22 | | -| **zig-dtsx** | **7.2 µs** | **8.4 µs** | **24.4 µs** | **159.2 µs** | **223.8 µs** | **563.9 µs** | |
23 | | -| oxc-transform | 8.3 µs _(1.1x)_ | 23.5 µs _(2.8x)_ | 93.0 µs _(3.8x)_ | 560.5 µs _(3.5x)_ | 390.0 µs _(1.7x)_ | 1.42 ms _(2.5x)_ | |
24 | | -| dtsx (no-cache) | 45.9 µs _(6.3x)_ | 71.4 µs _(8.5x)_ | 133.0 µs _(5.5x)_ | 671.1 µs _(4.2x)_ | 991.0 µs _(4.4x)_ | 2.44 ms _(4.3x)_ | |
25 | | -| tsc | 1.01 ms _(140.3x)_ | 1.26 ms _(149.8x)_ | 3.22 ms _(132.3x)_ | 5.90 ms _(37.1x)_ | 8.96 ms _(40.0x)_ | 18.11 ms _(32.1x)_ | |
| 20 | +| Tool | Small (~50 lines) | Medium (~100 lines) | Large (~330 lines) | XLarge (~1050 lines) | |
| 21 | +|------|------|------|------|------| |
| 22 | +| **zig-dtsx** | **3.37 µs** | **7.05 µs** | **21.89 µs** | **144.89 µs** | |
| 23 | +| oxc-transform | 7.36 µs _(2.2x)_ | 21.91 µs _(3.1x)_ | 89.66 µs _(4.1x)_ | 560.86 µs _(3.9x)_ | |
| 24 | +| dtsx (no-cache) | 15.52 µs _(4.6x)_ | 34.06 µs _(4.8x)_ | 81.96 µs _(3.7x)_ | 573.92 µs _(4.0x)_ | |
| 25 | +| tsc | 169.69 µs _(50.4x)_ | 410.31 µs _(58.2x)_ | 1.03 ms _(47.1x)_ | 4.02 ms _(27.7x)_ | |
26 | 26 |
|
27 | 27 | > **Note:** tsgo (`@typescript/native-preview`) is CLI-only — no in-process API is available yet. Each measurement includes ~40ms process spawn overhead, so it is not directly comparable to the in-process tools above. Once tsgo ships an in-process API, it will be added to the tables. |
28 | 28 |
|
| 29 | +### CLI — Single File |
| 30 | + |
| 31 | +_Compiled native binaries via subprocess._ |
| 32 | + |
| 33 | +| Tool | Small (~50 lines) | Medium (~100 lines) | Large (~330 lines) | XLarge (~1050 lines) | |
| 34 | +|------|------|------|------|------| |
| 35 | +| **zig-dtsx** | **2.69 ms** | **2.35 ms** | **2.28 ms** | **3.14 ms** | |
| 36 | +| oxc | 17.08 ms _(6.3x)_ | 17.12 ms _(7.3x)_ | 17.95 ms _(7.9x)_ | 17.69 ms _(5.6x)_ | |
| 37 | +| dtsx | 33.42 ms _(12.4x)_ | 34.09 ms _(14.5x)_ | 34.41 ms _(15.1x)_ | 36.34 ms _(11.6x)_ | |
| 38 | +| tsgo | 40.53 ms _(15.1x)_ | 44.10 ms _(18.8x)_ | 44.39 ms _(19.5x)_ | 57.77 ms _(18.4x)_ | |
| 39 | +| tsc | 384.25 ms _(142.8x)_ | 407.51 ms _(173.4x)_ | 418.81 ms _(183.7x)_ | 454.74 ms _(144.8x)_ | |
| 40 | + |
29 | 41 | ### Multi-File Project |
30 | 42 |
|
31 | 43 | _All tools processing files in-process sequentially._ |
32 | 44 |
|
33 | | -| Tool | 50 files | 100 files | |
34 | | -|------|------|------| |
35 | | -| **zig-dtsx** | **2.32 ms** | **4.79 ms** | |
36 | | -| dtsx | 8.77 ms _(3.8x)_ | 18.23 ms _(3.8x)_ | |
37 | | -| oxc-transform | 8.45 ms _(3.6x)_ | 17.57 ms _(3.7x)_ | |
38 | | -| tsc | 85.76 ms _(36.9x)_ | 171.33 ms _(35.7x)_ | |
39 | | - |
40 | | -> _No previous benchmark found for regression comparison_ |
| 45 | +| Tool | 50 files | 100 files | 500 files | |
| 46 | +|------|------|------|------| |
| 47 | +| **zig-dtsx** | **18.10 ms** | **31.46 ms** | **~140 ms** | |
| 48 | +| oxc | 48.27 ms _(2.7x)_ | 79.00 ms _(2.5x)_ | ~365 ms _(2.6x)_ | |
| 49 | +| dtsx | 70.86 ms _(3.9x)_ | 360.34 ms _(11.5x)_ | ~540 ms _(3.9x)_ | |
| 50 | +| tsgo | 244.68 ms _(13.5x)_ | 419.65 ms _(13.3x)_ | - | |
| 51 | +| tsc | 871.48 ms _(48.1x)_ | - | - | |
41 | 52 |
|
42 | 53 | ### zig-dtsx vs oxc-transform |
43 | 54 |
|
44 | 55 | | Input Size | zig-dtsx | oxc-transform | Speedup | |
45 | 56 | |-----------|----------|---------------|----------| |
46 | | -| Small (~50 lines) | 7.2 µs | 8.3 µs | :green_circle: 1.14x | |
47 | | -| Medium (~100 lines) | 8.4 µs | 23.5 µs | :green_circle: 2.79x | |
48 | | -| Large (~330 lines) | 24.4 µs | 93.0 µs | :green_circle: 3.82x | |
49 | | -| XLarge (~1050 lines) | 159.2 µs | 560.5 µs | :green_circle: 3.52x | |
50 | | -| XXLarge (~2000 lines) | 223.8 µs | 390.0 µs | :green_circle: 1.74x | |
51 | | -| Huge (~5000 lines) | 563.9 µs | 1.42 ms | :green_circle: 2.51x | |
| 57 | +| Small (~50 lines) | 3.37 µs | 7.36 µs | :green_circle: 2.18x | |
| 58 | +| Medium (~100 lines) | 7.05 µs | 21.91 µs | :green_circle: 3.11x | |
| 59 | +| Large (~330 lines) | 21.89 µs | 89.66 µs | :green_circle: 4.10x | |
| 60 | +| XLarge (~1050 lines) | 144.89 µs | 560.86 µs | :green_circle: 3.87x | |
| 61 | + |
| 62 | +### dtsx (cached) vs oxc-transform |
| 63 | + |
| 64 | +| Input Size | dtsx (cached) | oxc-transform | Speedup | |
| 65 | +|-----------|----------|---------------|----------| |
| 66 | +| Small (~50 lines) | 97.81 ns | 7.35 µs | :green_circle: 75x | |
| 67 | +| Medium (~100 lines) | 162.55 ns | 22.66 µs | :green_circle: 139x | |
| 68 | +| Large (~330 lines) | 376.39 ns | 85.77 µs | :green_circle: 228x | |
| 69 | +| XLarge (~1050 lines) | 1.43 µs | 558.72 µs | :green_circle: 391x | |
52 | 70 |
|
53 | 71 | <details> |
54 | 72 | <summary><strong>Internal Benchmark Details</strong></summary> |
|
0 commit comments