Same source. Fresh process.
Each tool receives the same source for the selected fixture. Every sample starts in a new process and a fresh output directory. Filesystem caches are warm. Incremental and result caches are not reused.
Choose a platform, fixture, and library size. Compare tools doing similar work.
Declarations per source file. A semantic typecheck is not required.
| Tool / version | Median | Min - max | Samples |
|---|---|---|---|
| Oxc0.157.0 | 17.0 | 12.8 - 25.5 | 9 / 9 |
| dtsx0.11.34 | 22.2 | 16.9 - 49.4 | 9 / 9 |
| SWC1.16.22 | 55.0 | 50.6 - 82.7 | 9 / 9 |
| dtsx JS SDK0.11.34 | 63.9 | 42.4 - 107.1 | 9 / 9 |
| Rolldown + unplugin-isolated-decl0.17.0 | 79.0 | 60.1 - 140.8 | 9 / 9 |
| TypeScript transpileDeclaration6.0.3 | 152.6 | 115.2 - 173.2 | 9 / 9 |
| Tool / version | Median | Min - max | Samples |
|---|---|---|---|
| Oxc0.157.0 | 24.1 | 18.4 - 35.1 | 9 / 9 |
| dtsx0.11.34 | 26.0 | 20.4 - 40.4 | 9 / 9 |
| SWC1.16.22 | 68.3 | 55.1 - 188.1 | 9 / 9 |
| dtsx JS SDK0.11.34 | 81.8 | 56.5 - 102.0 | 9 / 9 |
| Rolldown + unplugin-isolated-decl0.17.0 | 111.6 | 72.6 - 223.9 | 9 / 9 |
| TypeScript transpileDeclaration6.0.3 | 228.4 | 176.7 - 386.1 | 9 / 9 |
| Tool / version | Median | Min - max | Samples |
|---|---|---|---|
| Oxc0.157.0 | 41.3 | 28.4 - 77.1 | 9 / 9 |
| dtsx0.11.34 | 44.3 | 34.3 - 68.6 | 9 / 9 |
| SWC1.16.22 | 102.6 | 73.4 - 146.9 | 9 / 9 |
| Rolldown + unplugin-isolated-decl0.17.0 | 125.3 | 95.0 - 319.5 | 9 / 9 |
| dtsx JS SDK0.11.34 | 152.0 | 110.2 - 270.1 | 9 / 9 |
| TypeScript transpileDeclaration6.0.3 | 417.8 | 327.5 - 727.4 | 9 / 9 |
Includes semantic diagnostics. These compilers do extra work; compare within this group.
| Tool / version | Median | Min - max | Samples |
|---|---|---|---|
| TypeScript 7 native7.0.2 | 252.2 | 202.5 - 301.2 | 9 / 9 |
| TypeScript 6 tsc6.0.3 | 1145.5 | 909.6 - 1580.7 | 9 / 9 |
| Tool / version | Median | Min - max | Samples |
|---|---|---|---|
| TypeScript 7 native7.0.2 | 291.4 | 205.0 - 464.7 | 9 / 9 |
| TypeScript 6 tsc6.0.3 | 1170.2 | 866.2 - 1731.0 | 9 / 9 |
| Tool / version | Median | Min - max | Samples |
|---|---|---|---|
| TypeScript 7 native7.0.2 | 344.3 | 263.8 - 715.0 | 9 / 9 |
| TypeScript 6 tsc6.0.3 | 1496.4 | 1042.5 - 2190.0 | 9 / 9 |
One public declaration entry. Checking and JavaScript work vary by pipeline.
| Tool / version | Median | Min - max | Samples |
|---|---|---|---|
| dtsx bundle0.11.34 | 47.6 | 45.3 - 74.2 | 9 / 9 |
| tsdown / Oxc0.23.7 | 96.4 | 77.2 - 172.0 | 9 / 9 |
| tsdown / TypeScript0.23.7 | 558.7 | 455.5 - 786.1 | 9 / 9 |
| tsup9.0.0 | 616.1 | 582.7 - 1004.3 | 9 / 9 |
| tsc + rollup-plugin-dts6.5.1 | 1220.2 | 907.3 - 1472.5 | 9 / 9 |
| dts-bundle-generator9.5.1 | 1604.6 | 1209.8 - 2298.2 | 9 / 9 |
| Vite + unplugin-dts1.1.2 | 1636.0 | 1282.9 - 1964.1 | 9 / 9 |
| tsc + API Extractor7.60.1 | 1874.8 | 1552.0 - 2495.0 | 9 / 9 |
| Tool / version | Median | Min - max | Samples |
|---|---|---|---|
| dtsx bundle0.11.34 | 66.6 | 61.4 - 133.4 | 9 / 9 |
| tsdown / Oxc0.23.7 | 129.3 | 107.0 - 298.8 | 9 / 9 |
| tsdown / TypeScript0.23.7 | 706.1 | 543.3 - 1106.7 | 9 / 9 |
| tsup9.0.0 | 810.3 | 655.6 - 1197.8 | 9 / 9 |
| tsc + rollup-plugin-dts6.5.1 | 1224.2 | 977.5 - 2013.0 | 9 / 9 |
| dts-bundle-generator9.5.1 | 1627.3 | 1325.5 - 2483.8 | 9 / 9 |
| Vite + unplugin-dts1.1.2 | 1980.0 | 1416.1 - 2380.2 | 9 / 9 |
| tsc + API Extractor7.60.1 | 2318.7 | 1628.9 - 3014.1 | 9 / 9 |
| Tool / version | Median | Min - max | Samples |
|---|---|---|---|
| dtsx bundle0.11.34 | 147.6 | 119.2 - 221.9 | 9 / 9 |
| tsdown / Oxc0.23.7 | 244.6 | 181.8 - 421.6 | 9 / 9 |
| tsdown / TypeScript0.23.7 | 883.7 | 664.9 - 1222.9 | 9 / 9 |
| tsup9.0.0 | 1162.3 | 868.7 - 1577.5 | 9 / 9 |
| tsc + rollup-plugin-dts6.5.1 | 1666.7 | 1257.0 - 1931.6 | 9 / 9 |
| dts-bundle-generator9.5.1 | 2055.4 | 1772.9 - 3411.3 | 9 / 9 |
| Vite + unplugin-dts1.1.2 | 2361.9 | 1881.3 - 3345.2 | 9 / 9 |
| tsc + API Extractor7.60.1 | 2600.1 | 1986.8 - 3126.9 | 9 / 9 |
Measured November 8, 2026 on Apple M1 (Virtual), macOS arm64, 3 CPU cores, 7 GiB memory, Bun 1.4.4. This snapshot uses a hosted GitHub Actions runner. Virtualization and shared host activity can affect timings. Ranges and raw samples are visible.
macOS · Explicit annotations · 100 modules.
Oxc has the lowest per-module emission median among qualified configurations.
dtsx bundle has the lowest standalone bundle median among qualified configurations.
Close medians with overlapping ranges should be treated as similar performance. Compare within the selected platform, fixture and output group.
Declarations per source file. A semantic typecheck is not required.
| Tool / version | Median | Min - max | Samples |
|---|---|---|---|
| dtsx0.11.34 | 17.0 | 12.8 - 23.8 | 9 / 9 |
| Oxc0.157.0 | 17.6 | 13.1 - 25.1 | 9 / 9 |
| SWC1.16.22 | 31.7 | 26.7 - 37.6 | 9 / 9 |
| Rolldown + unplugin-isolated-decl0.17.0 | 60.0 | 55.5 - 70.9 | 9 / 9 |
| dtsx JS SDK0.11.34 | 67.0 | 61.0 - 72.4 | 9 / 9 |
| TypeScript transpileDeclaration6.0.3 | 193.3 | 187.9 - 220.1 | 9 / 9 |
| Tool / version | Median | Min - max | Samples |
|---|---|---|---|
| dtsx0.11.34 | 21.9 | 16.7 - 30.7 | 9 / 9 |
| Oxc0.157.0 | 24.0 | 17.5 - 51.1 | 9 / 9 |
| SWC1.16.22 | 42.5 | 35.1 - 62.3 | 9 / 9 |
| Rolldown + unplugin-isolated-decl0.17.0 | 71.0 | 62.0 - 83.6 | 9 / 9 |
| dtsx JS SDK0.11.34 | 80.8 | 73.8 - 97.7 | 9 / 9 |
| TypeScript transpileDeclaration6.0.3 | 274.9 | 264.6 - 291.5 | 9 / 9 |
| Tool / version | Median | Min - max | Samples |
|---|---|---|---|
| dtsx0.11.34 | 29.8 | 24.6 - 37.2 | 9 / 9 |
| Oxc0.157.0 | 35.6 | 25.2 - 70.8 | 9 / 9 |
| SWC1.16.22 | 61.4 | 52.9 - 74.6 | 9 / 9 |
| Rolldown + unplugin-isolated-decl0.17.0 | 93.5 | 83.6 - 131.4 | 9 / 9 |
| dtsx JS SDK0.11.34 | 118.9 | 108.4 - 146.6 | 9 / 9 |
| TypeScript transpileDeclaration6.0.3 | 420.1 | 386.7 - 466.8 | 9 / 9 |
Includes semantic diagnostics. These compilers do extra work; compare within this group.
| Tool / version | Median | Min - max | Samples |
|---|---|---|---|
| TypeScript 7 native7.0.2 | 309.4 | 299.8 - 330.7 | 9 / 9 |
| TypeScript 6 tsc6.0.3 | 1415.3 | 1377.1 - 1446.0 | 9 / 9 |
| Tool / version | Median | Min - max | Samples |
|---|---|---|---|
| TypeScript 7 native7.0.2 | 311.6 | 309.3 - 336.1 | 9 / 9 |
| TypeScript 6 tsc6.0.3 | 1507.5 | 1455.5 - 1568.6 | 9 / 9 |
| Tool / version | Median | Min - max | Samples |
|---|---|---|---|
| TypeScript 7 native7.0.2 | 317.8 | 306.1 - 346.0 | 9 / 9 |
| TypeScript 6 tsc6.0.3 | 1614.6 | 1556.3 - 1638.4 | 9 / 9 |
One public declaration entry. Checking and JavaScript work vary by pipeline.
| Tool / version | Median | Min - max | Samples |
|---|---|---|---|
| dtsx bundle0.11.34 | 65.2 | 61.5 - 76.2 | 9 / 9 |
| tsdown / Oxc0.23.7 | 121.9 | 112.9 - 125.3 | 9 / 9 |
| tsdown / TypeScript0.23.7 | 723.5 | 703.8 - 739.9 | 9 / 9 |
| tsup9.0.0 | 892.3 | 873.9 - 973.0 | 9 / 9 |
| tsc + rollup-plugin-dts6.5.1 | 1472.8 | 1421.4 - 1563.7 | 9 / 9 |
| Vite + unplugin-dts1.1.2 | 1964.2 | 1915.6 - 2029.8 | 9 / 9 |
| dts-bundle-generator9.5.1 | 2072.1 | 2020.9 - 2103.8 | 9 / 9 |
| tsc + API Extractor7.60.1 | 2537.2 | 2491.1 - 2684.3 | 9 / 9 |
| Tool / version | Median | Min - max | Samples |
|---|---|---|---|
| dtsx bundle0.11.34 | 83.1 | 76.9 - 95.4 | 9 / 9 |
| tsdown / Oxc0.23.7 | 167.2 | 156.3 - 182.7 | 9 / 9 |
| tsdown / TypeScript0.23.7 | 809.4 | 784.7 - 840.9 | 9 / 9 |
| tsup9.0.0 | 1045.7 | 1014.2 - 1107.6 | 9 / 9 |
| tsc + rollup-plugin-dts6.5.1 | 1593.8 | 1534.9 - 1792.8 | 9 / 9 |
| dts-bundle-generator9.5.1 | 2237.9 | 2169.7 - 2374.9 | 9 / 9 |
| Vite + unplugin-dts1.1.2 | 2244.9 | 2121.7 - 2312.0 | 9 / 9 |
| tsc + API Extractor7.60.1 | 2704.8 | 2615.3 - 2823.6 | 9 / 9 |
| Tool / version | Median | Min - max | Samples |
|---|---|---|---|
| dtsx bundle0.11.34 | 131.0 | 120.6 - 143.9 | 9 / 9 |
| tsdown / Oxc0.23.7 | 253.7 | 230.3 - 272.1 | 9 / 9 |
| tsdown / TypeScript0.23.7 | 999.9 | 936.3 - 1055.3 | 9 / 9 |
| tsup9.0.0 | 1216.9 | 1198.0 - 1260.2 | 9 / 9 |
| tsc + rollup-plugin-dts6.5.1 | 1814.5 | 1771.8 - 1842.1 | 9 / 9 |
| dts-bundle-generator9.5.1 | 2471.8 | 2416.1 - 2505.7 | 9 / 9 |
| Vite + unplugin-dts1.1.2 | 2508.4 | 2424.4 - 2628.1 | 9 / 9 |
| tsc + API Extractor7.60.1 | 2932.5 | 2856.2 - 3021.7 | 9 / 9 |
Measured November 8, 2026 on AMD EPYC 9V74 80-Core Processor, Linux x64, 4 CPU cores, 16 GiB memory, Bun 1.4.4. This snapshot uses a hosted GitHub Actions runner. Virtualization and shared host activity can affect timings. Ranges and raw samples are visible.
Linux · Explicit annotations · 100 modules.
dtsx has the lowest per-module emission median among qualified configurations.
dtsx bundle has the lowest standalone bundle median among qualified configurations.
Close medians with overlapping ranges should be treated as similar performance. Compare within the selected platform, fixture and output group.
Declarations per source file. A semantic typecheck is not required.
| Tool / version | Median | Min - max | Samples |
|---|---|---|---|
| dtsx0.11.34 | 53.4 | 43.4 - 98.6 | 9 / 9 |
| dtsx JS SDK0.11.34 | 89.8 | 61.0 - 130.6 | 9 / 9 |
| Oxc0.157.0 | Not qualified for this fixture. Inspect the emission diagnostic ↗ | ||
| SWC1.16.22 | Not qualified for this fixture. Inspect the emission diagnostic ↗ | ||
| TypeScript transpileDeclaration6.0.3 | Not qualified for this fixture. Inspect the emission diagnostic ↗ | ||
| Rolldown + unplugin-isolated-decl0.17.0 | Not qualified for this fixture. Inspect the emission diagnostic ↗ | ||
| Tool / version | Median | Min - max | Samples |
|---|---|---|---|
| dtsx0.11.34 | 88.4 | 50.5 - 175.1 | 9 / 9 |
| dtsx JS SDK0.11.34 | 109.5 | 65.5 - 167.6 | 9 / 9 |
| Oxc0.157.0 | Not qualified for this fixture. Inspect the emission diagnostic ↗ | ||
| SWC1.16.22 | Not qualified for this fixture. Inspect the emission diagnostic ↗ | ||
| TypeScript transpileDeclaration6.0.3 | Not qualified for this fixture. Inspect the emission diagnostic ↗ | ||
| Rolldown + unplugin-isolated-decl0.17.0 | Not qualified for this fixture. Inspect the emission diagnostic ↗ | ||
| Tool / version | Median | Min - max | Samples |
|---|---|---|---|
| dtsx0.11.34 | 129.2 | 94.1 - 169.2 | 9 / 9 |
| dtsx JS SDK0.11.34 | 182.8 | 134.3 - 269.1 | 9 / 9 |
| Oxc0.157.0 | Not qualified for this fixture. Inspect the emission diagnostic ↗ | ||
| SWC1.16.22 | Not qualified for this fixture. Inspect the emission diagnostic ↗ | ||
| TypeScript transpileDeclaration6.0.3 | Not qualified for this fixture. Inspect the emission diagnostic ↗ | ||
| Rolldown + unplugin-isolated-decl0.17.0 | Not qualified for this fixture. Inspect the emission diagnostic ↗ | ||
Includes semantic diagnostics. These compilers do extra work; compare within this group.
| Tool / version | Median | Min - max | Samples |
|---|---|---|---|
| TypeScript 7 native7.0.2 | 326.0 | 264.9 - 583.6 | 9 / 9 |
| TypeScript 6 tsc6.0.3 | 1740.4 | 1149.7 - 2063.2 | 9 / 9 |
| Tool / version | Median | Min - max | Samples |
|---|---|---|---|
| TypeScript 7 native7.0.2 | 388.0 | 286.8 - 502.4 | 9 / 9 |
| TypeScript 6 tsc6.0.3 | 1420.7 | 1035.7 - 2027.4 | 9 / 9 |
| Tool / version | Median | Min - max | Samples |
|---|---|---|---|
| TypeScript 7 native7.0.2 | 398.0 | 318.8 - 590.0 | 9 / 9 |
| TypeScript 6 tsc6.0.3 | 1595.6 | 1243.1 - 2232.0 | 9 / 9 |
One public declaration entry. Checking and JavaScript work vary by pipeline.
| Tool / version | Median | Min - max | Samples |
|---|---|---|---|
| dtsx bundle0.11.34 | 71.3 | 57.1 - 122.5 | 9 / 9 |
| tsdown / TypeScript0.23.7 | 806.5 | 532.7 - 1018.5 | 9 / 9 |
| tsup9.0.0 | 836.9 | 626.4 - 1151.7 | 9 / 9 |
| tsc + rollup-plugin-dts6.5.1 | 1341.6 | 1051.1 - 1643.6 | 9 / 9 |
| Vite + unplugin-dts1.1.2 | 1841.9 | 1574.1 - 2791.0 | 9 / 9 |
| dts-bundle-generator9.5.1 | 2008.3 | 1438.7 - 2747.3 | 9 / 9 |
| tsc + API Extractor7.60.1 | 2487.4 | 1786.2 - 2732.5 | 9 / 9 |
| tsdown / Oxc0.23.7 | Not qualified for this fixture. Inspect the emission diagnostic ↗ | ||
| Tool / version | Median | Min - max | Samples |
|---|---|---|---|
| dtsx bundle0.11.34 | 100.0 | 78.2 - 170.3 | 9 / 9 |
| tsdown / TypeScript0.23.7 | 904.2 | 687.3 - 1075.4 | 9 / 9 |
| tsup9.0.0 | 1128.1 | 875.1 - 1370.4 | 9 / 9 |
| tsc + rollup-plugin-dts6.5.1 | 1544.0 | 1191.9 - 1979.9 | 9 / 9 |
| dts-bundle-generator9.5.1 | 2037.2 | 1531.6 - 2634.0 | 9 / 9 |
| Vite + unplugin-dts1.1.2 | 2322.8 | 1675.6 - 3049.5 | 9 / 9 |
| tsc + API Extractor7.60.1 | 2609.4 | 2205.0 - 3169.4 | 9 / 9 |
| tsdown / Oxc0.23.7 | Not qualified for this fixture. Inspect the emission diagnostic ↗ | ||
| Tool / version | Median | Min - max | Samples |
|---|---|---|---|
| dtsx bundle0.11.34 | 188.0 | 145.1 - 250.3 | 9 / 9 |
| tsdown / TypeScript0.23.7 | 1127.3 | 1046.9 - 1226.5 | 9 / 9 |
| tsup9.0.0 | 1292.8 | 1034.6 - 1511.4 | 9 / 9 |
| tsc + rollup-plugin-dts6.5.1 | 1825.6 | 1503.0 - 2203.7 | 9 / 9 |
| Vite + unplugin-dts1.1.2 | 2532.1 | 2370.0 - 4141.5 | 9 / 9 |
| dts-bundle-generator9.5.1 | 2544.8 | 2182.2 - 4615.5 | 9 / 9 |
| tsc + API Extractor7.60.1 | 3100.6 | 2692.8 - 3883.6 | 9 / 9 |
| tsdown / Oxc0.23.7 | Not qualified for this fixture. Inspect the emission diagnostic ↗ | ||
Measured November 8, 2026 on Apple M1 (Virtual), macOS arm64, 3 CPU cores, 7 GiB memory, Bun 1.4.4. This snapshot uses a hosted GitHub Actions runner. Virtualization and shared host activity can affect timings. Ranges and raw samples are visible.
macOS · Inferred APIs · 100 modules.
dtsx has the lowest per-module emission median among qualified configurations.
dtsx bundle has the lowest standalone bundle median among qualified configurations.
Close medians with overlapping ranges should be treated as similar performance. Compare within the selected platform, fixture and output group.
Declarations per source file. A semantic typecheck is not required.
| Tool / version | Median | Min - max | Samples |
|---|---|---|---|
| dtsx0.11.34 | 67.6 | 58.0 - 83.2 | 9 / 9 |
| dtsx JS SDK0.11.34 | 83.9 | 75.7 - 95.1 | 9 / 9 |
| Oxc0.157.0 | Not qualified for this fixture. Inspect the emission diagnostic ↗ | ||
| SWC1.16.22 | Not qualified for this fixture. Inspect the emission diagnostic ↗ | ||
| TypeScript transpileDeclaration6.0.3 | Not qualified for this fixture. Inspect the emission diagnostic ↗ | ||
| Rolldown + unplugin-isolated-decl0.17.0 | Not qualified for this fixture. Inspect the emission diagnostic ↗ | ||
| Tool / version | Median | Min - max | Samples |
|---|---|---|---|
| dtsx0.11.34 | 87.1 | 77.3 - 107.8 | 9 / 9 |
| dtsx JS SDK0.11.34 | 116.2 | 110.1 - 138.8 | 9 / 9 |
| Oxc0.157.0 | Not qualified for this fixture. Inspect the emission diagnostic ↗ | ||
| SWC1.16.22 | Not qualified for this fixture. Inspect the emission diagnostic ↗ | ||
| TypeScript transpileDeclaration6.0.3 | Not qualified for this fixture. Inspect the emission diagnostic ↗ | ||
| Rolldown + unplugin-isolated-decl0.17.0 | Not qualified for this fixture. Inspect the emission diagnostic ↗ | ||
| Tool / version | Median | Min - max | Samples |
|---|---|---|---|
| dtsx0.11.34 | 133.8 | 123.6 - 142.4 | 9 / 9 |
| dtsx JS SDK0.11.34 | 182.4 | 178.0 - 186.7 | 9 / 9 |
| Oxc0.157.0 | Not qualified for this fixture. Inspect the emission diagnostic ↗ | ||
| SWC1.16.22 | Not qualified for this fixture. Inspect the emission diagnostic ↗ | ||
| TypeScript transpileDeclaration6.0.3 | Not qualified for this fixture. Inspect the emission diagnostic ↗ | ||
| Rolldown + unplugin-isolated-decl0.17.0 | Not qualified for this fixture. Inspect the emission diagnostic ↗ | ||
Includes semantic diagnostics. These compilers do extra work; compare within this group.
| Tool / version | Median | Min - max | Samples |
|---|---|---|---|
| TypeScript 7 native7.0.2 | 401.7 | 389.0 - 414.3 | 9 / 9 |
| TypeScript 6 tsc6.0.3 | 1898.1 | 1855.9 - 1998.8 | 9 / 9 |
| Tool / version | Median | Min - max | Samples |
|---|---|---|---|
| TypeScript 7 native7.0.2 | 414.8 | 390.0 - 438.0 | 9 / 9 |
| TypeScript 6 tsc6.0.3 | 2018.0 | 1938.2 - 2065.2 | 9 / 9 |
| Tool / version | Median | Min - max | Samples |
|---|---|---|---|
| TypeScript 7 native7.0.2 | 446.0 | 416.0 - 490.7 | 9 / 9 |
| TypeScript 6 tsc6.0.3 | 2232.9 | 2207.8 - 2289.9 | 9 / 9 |
One public declaration entry. Checking and JavaScript work vary by pipeline.
| Tool / version | Median | Min - max | Samples |
|---|---|---|---|
| dtsx bundle0.11.34 | 92.4 | 80.0 - 107.7 | 9 / 9 |
| tsdown / TypeScript0.23.7 | 940.7 | 895.7 - 1012.9 | 9 / 9 |
| tsup9.0.0 | 1207.7 | 1178.0 - 1241.2 | 9 / 9 |
| tsc + rollup-plugin-dts6.5.1 | 1963.7 | 1908.8 - 2073.5 | 9 / 9 |
| Vite + unplugin-dts1.1.2 | 2658.2 | 2592.0 - 2833.3 | 9 / 9 |
| dts-bundle-generator9.5.1 | 2739.6 | 2677.2 - 2875.4 | 9 / 9 |
| tsc + API Extractor7.60.1 | 3415.9 | 3313.3 - 3513.0 | 9 / 9 |
| tsdown / Oxc0.23.7 | Not qualified for this fixture. Inspect the emission diagnostic ↗ | ||
| Tool / version | Median | Min - max | Samples |
|---|---|---|---|
| dtsx bundle0.11.34 | 135.0 | 129.3 - 148.6 | 9 / 9 |
| tsdown / TypeScript0.23.7 | 1176.7 | 1094.6 - 1268.0 | 9 / 9 |
| tsup9.0.0 | 1441.0 | 1375.5 - 1515.5 | 9 / 9 |
| tsc + rollup-plugin-dts6.5.1 | 2184.9 | 2096.5 - 2376.0 | 9 / 9 |
| Vite + unplugin-dts1.1.2 | 2910.4 | 2830.5 - 3010.1 | 9 / 9 |
| dts-bundle-generator9.5.1 | 2984.4 | 2929.2 - 3119.4 | 9 / 9 |
| tsc + API Extractor7.60.1 | 3624.9 | 3549.0 - 3811.7 | 9 / 9 |
| tsdown / Oxc0.23.7 | Not qualified for this fixture. Inspect the emission diagnostic ↗ | ||
| Tool / version | Median | Min - max | Samples |
|---|---|---|---|
| dtsx bundle0.11.34 | 211.3 | 204.1 - 258.9 | 9 / 9 |
| tsdown / TypeScript0.23.7 | 1440.6 | 1410.4 - 1500.2 | 9 / 9 |
| tsup9.0.0 | 1753.1 | 1710.6 - 1800.6 | 9 / 9 |
| tsc + rollup-plugin-dts6.5.1 | 2519.3 | 2409.1 - 2670.1 | 9 / 9 |
| Vite + unplugin-dts1.1.2 | 3334.6 | 3233.0 - 3388.3 | 9 / 9 |
| dts-bundle-generator9.5.1 | 3367.5 | 3253.0 - 3417.5 | 9 / 9 |
| tsc + API Extractor7.60.1 | 4010.5 | 3819.5 - 4092.2 | 9 / 9 |
| tsdown / Oxc0.23.7 | Not qualified for this fixture. Inspect the emission diagnostic ↗ | ||
Measured November 8, 2026 on AMD EPYC 7763 64-Core Processor, Linux x64, 4 CPU cores, 16 GiB memory, Bun 1.4.4. This snapshot uses a hosted GitHub Actions runner. Virtualization and shared host activity can affect timings. Ranges and raw samples are visible.
Linux · Inferred APIs · 100 modules.
dtsx has the lowest per-module emission median among qualified configurations.
dtsx bundle has the lowest standalone bundle median among qualified configurations.
Close medians with overlapping ranges should be treated as similar performance. Compare within the selected platform, fixture and output group.
The lab above times whole published workflows on hosted runners. These numbers come from dtsx's own suite: the emitter itself, file by file, against oxc and TypeScript 7. Measured November 9, 2026 on Apple M3 Pro (Mac15,6), 11-core CPU (5 performance + 6 efficiency), 18 GB memory, macOS 27.0.1, Bun 1.4.4. Measured source: dtsx 0.11.34 at 0aa5843. Each tool's output is verified before timing, and dtsx runs in its value-inferring mode. Times are means; lower is faster. Each time is the median of 5 full runs; the 1-minute load average ranged 7.3–16.0 during measurement.
| Tool | Small (~50 lines) | Medium (~100 lines) | Large (~330 lines) | XLarge (~1050 lines) |
|---|---|---|---|---|
| dtsx | 6.74 µs | 13.96 µs | 58.13 µs | 325.92 µs |
| oxc-transform | 8.20 µs 1.22x | 26.75 µs 1.92x | 71.10 µs 1.22x | 327.74 µs 1.01x |
| Tool | Small (~50 lines) | Medium (~100 lines) | Large (~330 lines) | XLarge (~1050 lines) |
|---|---|---|---|---|
| dtsx | 3.10 ms | 2.54 ms | 2.74 ms | 4.03 ms |
| oxc | 10.04 ms 3.2x | 9.51 ms 3.7x | 11.32 ms 4.1x | 12.56 ms 3.1x |
| tsc 7 | 32.17 ms 10x | 31.22 ms 12x | 45.81 ms 17x | 42.16 ms 10x |
| Tool | 50 files | 100 files | 500 files |
|---|---|---|---|
| dtsx | 13.57 ms | 17.76 ms | 87.46 ms |
| oxc | 25.50 ms 1.88x | 38.65 ms 2.2x | 203.60 ms 2.3x |
| tsc 7 | 65.67 ms 4.8x | 101.32 ms 5.7x | 449.79 ms 5.1x |
The @dtsx/dtsx SDK, which powers the bundler and build-tool plugins, called in-process like the JavaScript SDKs it is compared with. It ships the native engine for each platform and runs it in-process, falling back to its TypeScript engine where no native library applies.
| Tool | Small (~50 lines) | Medium (~100 lines) | Large (~330 lines) | XLarge (~1050 lines) |
|---|---|---|---|---|
| dtsx JS SDK | 7.74 µs | 15.04 µs | 55.66 µs | 247.90 µs |
| oxc-transform | 8.20 µs 1.06x | 26.75 µs 1.78x | 71.10 µs 1.28x | 327.74 µs 1.32x |
| Source files | Tool | Average |
|---|---|---|
| 2 | dtsx JS SDK | 3.10 ms |
| 2 | tsdown JS SDK | 44.26 ms |
| 11 | dtsx JS SDK | 6.93 ms |
| 11 | tsdown JS SDK | 48.61 ms |
| 101 | dtsx JS SDK | 58.90 ms |
| 101 | tsdown JS SDK | 88.93 ms |
The Explicit annotations fixture covers authored public types, generics, private fields, mapped types and enums. The Inferred APIs fixture omits type annotations and type assertions. It tests inferred defaults, returns, arrow functions, class members, objects, arrays and imported function results.
Every configuration receives the same source in the selected fixture. Emission failures and incorrect inferred types remain visible. Only fully qualified configurations receive medians. Raw results include the diagnostics.
Each tool receives the same source for the selected fixture. Every sample starts in a new process and a fresh output directory. Filesystem caches are warm. Incremental and result caches are not reused.
Every sample must exit successfully, emit declarations, and pass a strict consumer covering every module. Exercised API positions must avoid any. Parameter types, arity and default optionality are checked. Inferred types must also preserve expected widening. Two negative assignments must produce exactly TS2322. Bundled declarations are tested in a standalone directory.
Wall time includes startup, package loading, source reads, emission, writes, and disposal. Cleanup and correctness checks happen outside timing. Two warmups precede nine samples, with tool order rotated each round.
TypeScript compilers perform semantic checks. API Extractor and Rollup include prerequisite tsc emission. Vite runs its JavaScript pipeline. tsup and tsdown use declaration-only mode. The adapter source shows every setting.
Every configuration is rerun on each platform. macOS and Linux timings stay separate, as do annotated and inferred APIs. A failed configuration is never ranked as a fast result. The fixtures exclude external dependencies, JSX, watch mode, declaration maps, and incremental rebuilds. The checks qualify this API; they do not prove correctness for arbitrary TypeScript.
The dtsx row uses the official dtsx 0.11.34 release: its native engine library with the matching Bun binding. The dtsx JS SDK row uses the published npm package. Linux shared libraries target GNU libc 2.17. Inferred dtsx builds include project planning and dependency snapshots in the measured command; the native engine performs inference and emission. The setup verifies pinned SHA-256 checksums before measuring. The source commit and artifact checksums are included in each raw snapshot. Inspect the release checksums ↗