Blacksmith 基准快照
README 与所有语言页面均由同一个已提交的产物生成。文件数量按行标明。
| 运行环境 |
测量时间 |
测量次数 |
预热次数 |
blacksmith-32vcpu-ubuntu-2404 (32 CPU) |
2026-09-16T08:19:25.262Z |
3 |
1 |
Actions · f9cc50ee2e2f · JSON
| 项目 |
文件数 |
比较工具 |
比较工具中位数 |
Vize 1T |
Vize max |
速度比 |
| SFC 编译 |
3,000 |
@vue/compiler-sfc (1T) |
3.57s |
835.3ms |
65.0ms |
54.8x |
| 大型 SFC 编译 |
1 |
@vue/compiler-sfc (1T) |
61.4ms |
16.3ms |
15.2ms |
4.0x |
| 大型 SFC 类型检查 |
1 |
vue-tsc |
1.34s |
186.4ms |
190.1ms |
7.0x |
| Lint |
3,000 |
eslint-plugin-vue (1T) |
20.75s |
432.3ms |
114.0ms |
182.0x |
| 格式化 |
3,000 |
Prettier CLI |
29.72s |
1.07s |
351.4ms |
84.6x |
| 类型检查 |
500 |
vue-tsc |
6.75s |
2.03s |
1.37s |
4.9x |
| Vite 构建 |
1,000 |
@vitejs/plugin-vue |
1.66s |
n/a |
889.2ms |
1.9x |
| Nuxt 构建 |
250 |
Nuxt default compiler |
3.07s |
n/a |
3.21s |
0.95x |
| Musea |
240 |
n/a |
n/a |
n/a |
30.9ms |
n/a |
类型检查速度比比较 Vize 与 vue-tsc,即 Vue 项目当前实际使用的类型检查器。vue-tsc 运行 JavaScript 版 TypeScript 编译器,而 Vize 运行原生 tsgo,因此该比值涵盖整条工具链,而非仅 Vue 层;完整快照中按引擎类别分组的表格会在同一引擎内部排名,用于单独衡量 Vue 层。每次计时都通过诊断工作验证,但不同工具的诊断覆盖范围并不相同。这些比值不代表准确性相同,也不代表相对于旧版 Vize 的性能提升。未通过验证的比较工具不发布耗时或排名。
完整方法与验证结果
工具版本与二进制校验和
| 工具 |
版本 |
二进制 SHA-256 |
| Vize |
vize 0.424.11 |
dc5e840133beec86106ca27c496ca01fbff4299a8aef6c3a0f2fca3131f88fe3 |
| tsgo |
Version 7.0.2 |
4f2de678286401759b3fb4475bafe35b8f32b4b3a07d92642bbf37eadc9b34a4 |
| vue-tsc |
Version 6.0.3 |
811cc8124f36b6c770964d486da62af1b9db6949f62bc47205982d17e8e7dc8d |
| verter-tsc |
verter-tsc 0.0.1-beta.3 |
81bec5c957487bd2caf15312bf4f180afadd074f11c1d34cb4bb2c66bd7ac224 |
| Golar |
Golar version 0.1.10 |
a100c0e559b6cf85fc3e67a65f0b8eedcee0ccf624022fc4882bea2a3d6316da |
| TypeScript (vue-tsc) |
n/a |
n/a |
| Vue |
3.6.0-beta.10 |
n/a |
| ESLint |
v10.4.1 |
41dd060d45aca4a2144b94862e21e285bbb726b19e61db7a03c5b2e0b67973cc |
| Prettier |
3.8.3 |
a7a78ad15344be4f14f24832a8c5fa5918bec4339b8d1d0903a5167c34ecb428 |
| Node.js |
v24.14.0 |
n/a |
Backend: native TypeScript engine ready at /home/runner/_work/vize/vize/node_modules/@typescript/typescript-linux-x64/lib/tsc. Planted-diagnostic gating for the type-check rows lives in tools/benchmarks/scripts/check-gate.mjs (.github/workflows/check-bench.yml).
诊断工作验证
大型 SFC 类型检查: 按引擎类别分别排名
| 引擎类别 |
对比项 |
中位数 |
相对同类最快项 |
| JavaScript TypeScript 引擎 (tsc) |
vue-tsc |
1.34s |
1.00x |
| 原生 TypeScript 引擎 (tsgo) |
Vize check (1T) |
186.4ms |
1.00x |
| 原生 TypeScript 引擎 (tsgo) |
Vize check (max) |
190.1ms |
1.02x |
| 原生 TypeScript 引擎 (tsgo) |
verter-tsc |
1.58s |
8.48x |
速度比仅比较使用相同原生 tsgo 引擎的工具。诊断覆盖范围可能不同,因此这不代表准确性相同。使用 JavaScript TypeScript 引擎的 vue-tsc 仅作为同次运行的时间参考,不计算跨引擎速度比。
Golar typecheck (预检): 验证未通过,不公布耗时或排名。
missed the corpus-scale plant or changed baseline diagnostics: {"plants":[["__CheckGatePlant.vue","error","2","7","TS2322","Type 'string' is not assignable to type 'number'."],["__CheckGatePlant.vue","error","7","26","TS2322","Type 'string' is not assignable to type 'Booleanish | undefined'."]],"added":[["LargeDashboard.vue","error","1019","89","TS2353","Object literal may only specify known properties, and ''data-index'' does not exist in type 'HTMLAttributes & ReservedProps'."],["LargeDashboard.vue","error","1111","89","TS2353","Object literal may only specify known properties, and ''data-index'' does not exist in type 'HTMLAttributes & ReservedProps'."],["LargeDashboard.vue","error","1157","88","TS2353","Object literal may only specify known properties, and ''data-index'' does not exist in type 'HTMLAttributes & ReservedProps'."]],"removed":[["LargeDashboard.vue","error","1019","88","TS2353","Object literal may only specify known properties, and ''data-index'' does not exist in type 'HTMLAttributes & ReservedProps'."],["LargeDashboard.vue","error","1111","88","TS2353","Object literal may only specify known properties, and ''data-index'' does not exist in type 'HTMLAttributes & ReservedProps'."],["LargeDashboard.vue","error","1157","89","TS2353","Object literal may only specify known properties, and ''data-index'' does not exist in type 'HTMLAttributes & ReservedProps'."]]}
Golar (lint+check) (预检): 验证未通过,不公布耗时或排名。
missed the corpus-scale plant or changed baseline diagnostics: {"plants":[["__CheckGatePlant.vue","error","2","7","TS2322","Type 'string' is not assignable to type 'number'."],["__CheckGatePlant.vue","error","7","26","TS2322","Type 'string' is not assignable to type 'Booleanish | undefined'."]],"added":[["LargeDashboard.vue","error","1088","89","TS2353","Object literal may only specify known properties, and ''data-index'' does not exist in type 'HTMLAttributes & ReservedProps'."],["LargeDashboard.vue","error","1111","89","TS2353","Object literal may only specify known properties, and ''data-index'' does not exist in type 'HTMLAttributes & ReservedProps'."],["LargeDashboard.vue","error","1203","89","TS2353","Object literal may only specify known properties, and ''data-index'' does not exist in type 'HTMLAttributes & ReservedProps'."]],"removed":[["LargeDashboard.vue","error","1088","88","TS2353","Object literal may only specify known properties, and ''data-index'' does not exist in type 'HTMLAttributes & ReservedProps'."],["LargeDashboard.vue","error","1111","88","TS2353","Object literal may only specify known properties, and ''data-index'' does not exist in type 'HTMLAttributes & ReservedProps'."],["LargeDashboard.vue","error","1203","88","TS2353","Object literal may only specify known properties, and ''data-index'' does not exist in type 'HTMLAttributes & ReservedProps'."]]}
类型检查工作验证(严格模板检查;预热前验证;每次运行重新核对诊断):
| 对比项 |
最小错误注入 |
语料库错误注入 |
诊断数 |
退出状态 |
诊断 SHA-256 |
| vue-tsc |
4 |
通过 |
300 |
2 |
508e4fa9ce85b1cd8051ee934c78c5bc2a9dd3a8ac7ff4b44f3d8dcf7263a2eb |
| verter-tsc |
4 |
通过 |
0 |
0 |
6f6df0f8037998d14783ed2bdf8e9cf61e2837b6b595f5f53c8933069ef0dc87 |
| Vize check (1T) |
4 |
通过 |
0 |
0 |
6f6df0f8037998d14783ed2bdf8e9cf61e2837b6b595f5f53c8933069ef0dc87 |
| Vize check (max) |
4 |
通过 |
0 |
0 |
6f6df0f8037998d14783ed2bdf8e9cf61e2837b6b595f5f53c8933069ef0dc87 |
类型检查: 按引擎类别分别排名
| 引擎类别 |
对比项 |
中位数 |
相对同类最快项 |
| JavaScript TypeScript 引擎 (tsc) |
vue-tsc |
6.75s |
1.00x |
| 原生 TypeScript 引擎 (tsgo) |
Vize check (max) |
1.37s |
1.00x |
| 原生 TypeScript 引擎 (tsgo) |
Vize check (1T) |
2.03s |
1.47x |
| 原生 TypeScript 引擎 (tsgo) |
verter-tsc |
2.08s |
1.51x |
速度比仅比较使用相同原生 tsgo 引擎的工具。诊断覆盖范围可能不同,因此这不代表准确性相同。使用 JavaScript TypeScript 引擎的 vue-tsc 仅作为同次运行的时间参考,不计算跨引擎速度比。
Golar typecheck (预检): 验证未通过,不公布耗时或排名。
missed the corpus-scale plant or changed baseline diagnostics: {"plants":[["__CheckGatePlant.vue","error","2","7","TS2322","Type 'string' is not assignable to type 'number'."],["__CheckGatePlant.vue","error","7","26","TS2322","Type 'string' is not assignable to type 'Booleanish | undefined'."]],"added":[["Component0007.vue","error","8","73","TS2353","Object literal may only specify known properties, and ''data-kind'' does not exist in type 'HTMLAttributes & ReservedProps'."],["Component0017.vue","error","8","72","TS2353","Object literal may only specify known properties, and ''data-kind'' does not exist in type 'HTMLAttributes & ReservedProps'."],["Component0027.vue","error","8","72","TS2353","Object literal may only specify known properties, and ''data-kind'' does not exist in type 'HTMLAttributes & ReservedProps'."]],"removed":[["Component0007.vue","error","8","72","TS2353","Object literal may only specify known properties, and ''data-kind'' does not exist in type 'HTMLAttributes & ReservedProps'."],["Component0017.vue","error","8","73","TS2353","Object literal may only specify known properties, and ''data-kind'' does not exist in type 'HTMLAttributes & ReservedProps'."],["Component0027.vue","error","8","73","TS2353","Object literal may only specify known properties, and ''data-kind'' does not exist in type 'HTMLAttributes & ReservedProps'."]]}
Golar (lint+check) (预检): 验证未通过,不公布耗时或排名。
missed the corpus-scale plant or changed baseline diagnostics: {"plants":[["__CheckGatePlant.vue","error","2","7","TS2322","Type 'string' is not assignable to type 'number'."],["__CheckGatePlant.vue","error","7","26","TS2322","Type 'string' is not assignable to type 'Booleanish | undefined'."]],"added":[["Component0037.vue","error","8","73","TS2353","Object literal may only specify known properties, and ''data-kind'' does not exist in type 'HTMLAttributes & ReservedProps'."],["Component0057.vue","error","8","73","TS2353","Object literal may only specify known properties, and ''data-kind'' does not exist in type 'HTMLAttributes & ReservedProps'."],["Component0197.vue","error","8","73","TS2353","Object literal may only specify known properties, and ''data-kind'' does not exist in type 'HTMLAttributes & ReservedProps'."]],"removed":[["Component0037.vue","error","8","72","TS2353","Object literal may only specify known properties, and ''data-kind'' does not exist in type 'HTMLAttributes & ReservedProps'."],["Component0057.vue","error","8","72","TS2353","Object literal may only specify known properties, and ''data-kind'' does not exist in type 'HTMLAttributes & ReservedProps'."],["Component0197.vue","error","8","72","TS2353","Object literal may only specify known properties, and ''data-kind'' does not exist in type 'HTMLAttributes & ReservedProps'."]]}
类型检查工作验证(严格模板检查;预热前验证;每次运行重新核对诊断):
| 对比项 |
最小错误注入 |
语料库错误注入 |
诊断数 |
退出状态 |
诊断 SHA-256 |
| vue-tsc |
4 |
通过 |
450 |
2 |
ca130bc55a0235c3dada35ca3a7aca8558f63858d7d03ec3ec586f4828773dd5 |
| verter-tsc |
4 |
通过 |
4250 |
1 |
7f6641e728fa345abc3ac7eebb7f77a5e694c0cdaf81bf951c8829c0b2c32cfe |
| Vize check (1T) |
4 |
通过 |
0 |
0 |
6f6df0f8037998d14783ed2bdf8e9cf61e2837b6b595f5f53c8933069ef0dc87 |
| Vize check (max) |
4 |
通过 |
0 |
0 |
6f6df0f8037998d14783ed2bdf8e9cf61e2837b6b595f5f53c8933069ef0dc87 |
各工具的原始测量值
SFC 编译
| 对比项 |
中位数 (ms) |
各次耗时 (ms) |
| @vue/compiler-sfc (1T) |
3565.85 |
3567.88, 3565.85, 3550.948 |
| @vue/compiler-sfc (32 workers) |
1606.347 |
1697.16, 1528.422, 1606.347 |
| Vize native loop (1T) |
835.251 |
897.995, 835.251, 834.409 |
| Vize native batch results (max) |
65.028 |
59.568, 71.303, 65.028 |
| Vize native batch stats-only (core max) |
35.54 |
34.897, 35.54, 39.299 |
| Vize batch sequence (1→32T, measures 32T) |
37.278 |
37.278, 36.847, 37.976 |
| Vize batch sequence (32T→1, measures 1T) |
612.523 |
612.523, 588.983, 613.67 |
大型 SFC 编译
| 对比项 |
中位数 (ms) |
各次耗时 (ms) |
| @vue/compiler-sfc (1T) |
61.376 |
64.493, 61.376, 56.331 |
| @vue/compiler-sfc (1 workers) |
203.181 |
189.705, 203.181, 204.253 |
| Vize native loop (1T) |
16.263 |
16.263, 15.058, 17.05 |
| Vize native batch results (max) |
15.244 |
15.177, 15.902, 15.244 |
| Vize native batch stats-only (core max) |
11.67 |
11.374, 12.518, 11.67 |
| Vize batch sequence (1→32T, measures 32T) |
12.469 |
12.587, 11.654, 12.469 |
| Vize batch sequence (32T→1, measures 1T) |
12.33 |
12.33, 12.615, 12.214 |
大型 SFC 类型检查
| 对比项 |
中位数 (ms) |
各次耗时 (ms) |
| vue-tsc |
1337.752 |
1348.946, 1315.192, 1337.752 |
| verter-tsc |
1580.097 |
1580.097, 1611.568, 1563.42 |
| Vize check (1T) |
186.426 |
186.426, 181.091, 188.789 |
| Vize check (max) |
190.067 |
190.067, 190.793, 183.272 |
Lint
| 对比项 |
中位数 (ms) |
各次耗时 (ms) |
| eslint-plugin-vue (1T) |
20752.434 |
20609.852, 20830.969, 20752.434 |
| eslint-plugin-vue (32 workers) |
6984.314 |
6984.314, 6989.249, 6969.495 |
| Vize lint (1T) |
432.254 |
431.379, 432.254, 447.485 |
| Vize lint (max) |
114.045 |
114.045, 108.49, 120.315 |
格式化
| 对比项 |
中位数 (ms) |
各次耗时 (ms) |
| Prettier CLI |
29723.111 |
28949.562, 29745.493, 29723.111 |
| Vize fmt (1T) |
1072.253 |
1059.388, 1104.777, 1072.253 |
| Vize fmt (max) |
351.408 |
351.408, 342.484, 358.852 |
类型检查
| 对比项 |
中位数 (ms) |
各次耗时 (ms) |
| vue-tsc |
6754.668 |
6435.819, 6754.668, 6772.635 |
| verter-tsc |
2079.699 |
2079.699, 2075.939, 2102.418 |
| Vize check (1T) |
2025.704 |
2025.704, 1996.936, 2046.702 |
| Vize check (max) |
1374.02 |
1384.116, 1332.651, 1374.02 |
Vite 构建
| 对比项 |
中位数 (ms) |
各次耗时 (ms) |
| @vitejs/plugin-vue |
1656.557 |
1656.557, 1600.439, 1730.685 |
| @vizejs/vite-plugin |
889.18 |
889.18, 881.988, 947.765 |
Nuxt 构建
| 对比项 |
中位数 (ms) |
各次耗时 (ms) |
| Nuxt default compiler |
3067.515 |
3083.42, 3067.515, 3057.014 |
| @vizejs/nuxt |
3213.326 |
3259.084, 3213.326, 3176.535 |
Musea
| 对比项 |
中位数 (ms) |
各次耗时 (ms) |
| options: preserve configured Rollup inputs |
0.002 |
0.009, 0.002, 0.001 |
| buildStart: scan + parse art files |
16.52 |
16.817, 16.52, 15.88 |
| load: generate art modules |
9.163 |
11.451, 9.163, 8.979 |
| transform: TS to JS on generated modules |
4.048 |
4.048, 4.459, 3.772 |
| musea-nuxt: resolve Nuxt mock specifiers |
0.097 |
0.097, 0.102, 0.046 |
| whole plugin: config + options + buildStart + load + transform |
30.852 |
33.577, 29.868, 30.852 |