Skip to content

Commit 1d97626

Browse files
committed
refresh + dev
1 parent 4031ed8 commit 1d97626

File tree

4 files changed

+82
-27
lines changed

4 files changed

+82
-27
lines changed

README.md

+57-24
Original file line numberDiff line numberDiff line change
@@ -2,79 +2,112 @@
22

33
## Summary
44

5-
* Compared to swc, oxc transformer is 4x faster, uses 20% less memory, and is 35 MB smaller in package size (from swc's 37MB).
6-
* Compared to babel, oxc transformer is 40x faster, uses 70% less memory, and is 19 MB smaller with 168 npm packages less to install.
7-
<!-- * Compared to tsc's isolated declarations dts emit, oxc is x times faster. -->
5+
* For transform, oxc is 4x faster than swc, uses 20% less memory, and is 35 MB smaller in package size (from swc's 37MB).
6+
* For transform, oxc is 40x faster than babel, uses 70% less memory, and is 19 MB smaller with 168 npm packages less to install.
7+
* For react development + refresh, oxc is 6x faster than swc and 70x faster than Babel.
8+
* For tsc's isolated declarations dts emit, oxc is 45x faster on ordinary files, and 20x faster on larger files.
89

910
## Transform / Transpile
1011

1112
Oxc is 4x faster than swc, and 40x faster than Babel.
1213

14+
React development + refresh is 6x faster than swc and 70x faster Babel.
15+
1316
### GitHub Actions `ubuntu-latest`
1417

1518
```
19+
oxc - src/transform.bench.js > UserSettings.tsx
20+
5.62x faster than swc
21+
69.64x faster than babel
22+
1623
oxc - src/transform.bench.js > parser.ts
17-
4.02x faster than swc
18-
47.41x faster than babel
24+
3.72x faster than swc
25+
54.70x faster than babel
1926
2027
oxc - src/transform.bench.js > renderer.ts
21-
4.09x faster than swc
22-
27.14x faster than babel
28+
3.96x faster than swc
29+
30.35x faster than babel
2330
2431
oxc - src/transform.bench.js > table.tsx
25-
4.63x faster than swc
26-
44.04x faster than babel
32+
4.54x faster than swc
33+
59.54x faster than babel
2734
```
2835

2936
### MacBook Pro M3 Max
3037

3138
```
3239
oxc - src/transform.bench.js > UserSettings.tsx
33-
6.43x faster than swc
34-
67.96x faster than babel
40+
6.90x faster than swc
41+
56.93x faster than babel
42+
43+
oxc - src/transform.bench.js > parser.ts
44+
4.01x faster than swc
45+
42.31x faster than babel
46+
47+
oxc - src/transform.bench.js > renderer.ts
48+
3.76x faster than swc
49+
27.47x faster than babel
50+
51+
oxc - src/transform.bench.js > table.tsx
52+
3.94x faster than swc
53+
33.74x faster than babel
54+
```
55+
56+
#### React Development + Refresh
57+
58+
```
59+
oxc - src/transform.bench.js > UserSettings.tsx
60+
7.16x faster than swc
61+
75.47x faster than babel
3562
3663
oxc - src/transform.bench.js > parser.ts
37-
3.55x faster than swc
38-
44.01x faster than babel
64+
4.03x faster than swc
65+
51.63x faster than babel
3966
4067
oxc - src/transform.bench.js > renderer.ts
41-
3.62x faster than swc
42-
24.58x faster than babel
68+
3.86x faster than swc
69+
33.55x faster than babel
4370
4471
oxc - src/transform.bench.js > table.tsx
45-
4.22x faster than swc
46-
34.35x faster than babel
72+
4.18x faster than swc
73+
45.02x faster than babel
4774
```
4875

4976
## Isolated Declarations DTS Emit
5077

51-
Oxc is at least 5x faster than `tsc` on small files, and 20x faster on larger files.
78+
Oxc is 45x faster than `tsc` on ordinary files, and 20x faster on larger files.
5279

5380
### GitHub Actions `ubuntu-latest`
5481

5582
```
83+
oxc - src/id.bench.js > UserSettings.tsx
84+
45.05x faster than tsc
85+
5686
oxc - src/id.bench.js > parser.ts
57-
18.00x faster than tsc
87+
20.42x faster than tsc
5888
5989
oxc - src/id.bench.js > renderer.ts
60-
22.37x faster than tsc
90+
21.70x faster than tsc
6191
6292
oxc - src/id.bench.js > table.tsx
63-
8.06x faster than tsc
93+
7.24x faster than tsc
6494
```
6595

6696

6797
### MacBook Pro M3 Max
6898

6999
```
100+
oxc - src/id.bench.js > UserSettings.tsx
101+
37.16x faster than tsc
102+
70103
oxc - src/id.bench.js > parser.ts
71-
20.15x faster than tsc
104+
19.08x faster than tsc
72105
73106
oxc - src/id.bench.js > renderer.ts
74-
19.85x faster than tsc
107+
18.05x faster than tsc
75108
76109
oxc - src/id.bench.js > table.tsx
77-
5.09x faster than tsc
110+
4.40x faster than tsc
78111
```
79112

80113
### Memory Usage

package.json

+1
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
"@babel/preset-typescript": "^7.24.7",
1414
"@swc/core": "^1.7.28",
1515
"oxc-transform": "^0.30.4",
16+
"react-refresh": "^0.14.2",
1617
"typescript": "^5.6.2",
1718
"vitest": "^2.1.1"
1819
},

pnpm-lock.yaml

+8
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/transform.bench.js

+16-3
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,17 @@ import { transformSync as swcTransform } from "@swc/core";
55
import { transformSync as babelTransform } from '@babel/core'
66
import { transform as oxcTransform } from "oxc-transform";
77

8+
const development = false;
9+
const refresh = false;
10+
811
function oxc(filename, sourceText) {
9-
return oxcTransform(filename, sourceText);
12+
return oxcTransform(filename, sourceText, {
13+
react: {
14+
runtime: 'automatic',
15+
development,
16+
refresh
17+
}
18+
});
1019
}
1120

1221
function swc(filename, sourceText) {
@@ -18,7 +27,9 @@ function swc(filename, sourceText) {
1827
transform: {
1928
treatConstEnumAsEnum: true,
2029
react: {
21-
runtime: 'automatic'
30+
runtime: 'automatic',
31+
development,
32+
refresh,
2233
}
2334
},
2435
preserveAllComments: false,
@@ -31,9 +42,11 @@ function babel(filename, sourceText) {
3142
filename,
3243
babelrc: false,
3344
comments: false,
45+
envName: 'development',
46+
plugins: refresh ? [ "react-refresh/babel" ] : [],
3447
presets: [
3548
"@babel/preset-typescript",
36-
["@babel/preset-react", { runtime: 'automatic' }],
49+
["@babel/preset-react", { runtime: 'automatic', development }],
3750
]
3851
});
3952
}

0 commit comments

Comments
 (0)