Snapshot de benchmarks Blacksmith
Um único artefato versionado alimenta o README e todos os idiomas. A quantidade de arquivos é indicada em cada linha.
| Ambiente |
Data |
Medições |
Aquecimentos |
blacksmith-32vcpu-ubuntu-2404 (32 CPU) |
2026-09-16T08:19:25.262Z |
3 |
1 |
Actions · f9cc50ee2e2f · JSON
| Medição |
Arquivos |
Ferramenta comparada |
Mediana comparada |
Vize 1T |
Vize max |
Razão |
| Compilação SFC |
3,000 |
@vue/compiler-sfc (1T) |
3.57s |
835.3ms |
65.0ms |
54.8x |
| Compilação de SFC grande |
1 |
@vue/compiler-sfc (1T) |
61.4ms |
16.3ms |
15.2ms |
4.0x |
| Tipos em SFC grande |
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 |
| Formatação |
3,000 |
Prettier CLI |
29.72s |
1.07s |
351.4ms |
84.6x |
| Verificação de tipos |
500 |
vue-tsc |
6.75s |
2.03s |
1.37s |
4.9x |
| Build Vite |
1,000 |
@vitejs/plugin-vue |
1.66s |
n/a |
889.2ms |
1.9x |
| Build 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 |
As razões da verificação de tipos comparam Vize e vue-tsc, o verificador que os projetos Vue usam hoje. O vue-tsc executa o compilador TypeScript em JavaScript enquanto o Vize executa o tsgo nativo, portanto a razão cobre toda a cadeia de ferramentas e não apenas a camada Vue; as tabelas por classe de motor do instantâneo completo classificam ferramentas do mesmo motor entre si para isolar essa camada. Cada execução cronometrada valida o trabalho de diagnóstico, mas a cobertura varia entre ferramentas. Essas razões não demonstram precisão equivalente nem uma melhoria sobre uma versão anterior do Vize. Comparadores rejeitados não recebem tempo publicado nem classificação.
Metodologia e resultados completos
Versões das ferramentas e checksums
| Ferramenta |
Versão |
SHA-256 do binário |
| 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).
Validação do trabalho de diagnóstico
Tipos em SFC grande: classificação separada por mecanismo
| Classe de mecanismo |
Variante |
Mediana |
Em relação ao mais rápido da classe |
| Mecanismo TypeScript JavaScript (tsc) |
vue-tsc |
1.34s |
1.00x |
| Mecanismo TypeScript nativo (tsgo) |
Vize check (1T) |
186.4ms |
1.00x |
| Mecanismo TypeScript nativo (tsgo) |
Vize check (max) |
190.1ms |
1.02x |
| Mecanismo TypeScript nativo (tsgo) |
verter-tsc |
1.58s |
8.48x |
As razões comparam apenas ferramentas que usam o mesmo mecanismo tsgo nativo. A cobertura dos diagnósticos pode diferir; isso não demonstra precisão equivalente. O vue-tsc, que usa o mecanismo TypeScript JavaScript, aparece como referência de tempo da mesma execução, sem razão entre mecanismos diferentes.
Golar typecheck (pré-validação): rejeitado na validação; nenhum tempo ou posição publicado.
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) (pré-validação): rejeitado na validação; nenhum tempo ou posição publicado.
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'."]]}
Validação do trabalho de verificação de tipos (templates estritos; antes do aquecimento; diagnósticos conferidos a cada execução):
| Variante |
Erros mínimos injetados |
Injeção no corpus |
Diagnósticos |
Código de saída |
SHA-256 dos diagnósticos |
| vue-tsc |
4 |
aprovada |
300 |
2 |
508e4fa9ce85b1cd8051ee934c78c5bc2a9dd3a8ac7ff4b44f3d8dcf7263a2eb |
| verter-tsc |
4 |
aprovada |
0 |
0 |
6f6df0f8037998d14783ed2bdf8e9cf61e2837b6b595f5f53c8933069ef0dc87 |
| Vize check (1T) |
4 |
aprovada |
0 |
0 |
6f6df0f8037998d14783ed2bdf8e9cf61e2837b6b595f5f53c8933069ef0dc87 |
| Vize check (max) |
4 |
aprovada |
0 |
0 |
6f6df0f8037998d14783ed2bdf8e9cf61e2837b6b595f5f53c8933069ef0dc87 |
Verificação de tipos: classificação separada por mecanismo
| Classe de mecanismo |
Variante |
Mediana |
Em relação ao mais rápido da classe |
| Mecanismo TypeScript JavaScript (tsc) |
vue-tsc |
6.75s |
1.00x |
| Mecanismo TypeScript nativo (tsgo) |
Vize check (max) |
1.37s |
1.00x |
| Mecanismo TypeScript nativo (tsgo) |
Vize check (1T) |
2.03s |
1.47x |
| Mecanismo TypeScript nativo (tsgo) |
verter-tsc |
2.08s |
1.51x |
As razões comparam apenas ferramentas que usam o mesmo mecanismo tsgo nativo. A cobertura dos diagnósticos pode diferir; isso não demonstra precisão equivalente. O vue-tsc, que usa o mecanismo TypeScript JavaScript, aparece como referência de tempo da mesma execução, sem razão entre mecanismos diferentes.
Golar typecheck (pré-validação): rejeitado na validação; nenhum tempo ou posição publicado.
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) (pré-validação): rejeitado na validação; nenhum tempo ou posição publicado.
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'."]]}
Validação do trabalho de verificação de tipos (templates estritos; antes do aquecimento; diagnósticos conferidos a cada execução):
| Variante |
Erros mínimos injetados |
Injeção no corpus |
Diagnósticos |
Código de saída |
SHA-256 dos diagnósticos |
| vue-tsc |
4 |
aprovada |
450 |
2 |
ca130bc55a0235c3dada35ca3a7aca8558f63858d7d03ec3ec586f4828773dd5 |
| verter-tsc |
4 |
aprovada |
4250 |
1 |
7f6641e728fa345abc3ac7eebb7f77a5e694c0cdaf81bf951c8829c0b2c32cfe |
| Vize check (1T) |
4 |
aprovada |
0 |
0 |
6f6df0f8037998d14783ed2bdf8e9cf61e2837b6b595f5f53c8933069ef0dc87 |
| Vize check (max) |
4 |
aprovada |
0 |
0 |
6f6df0f8037998d14783ed2bdf8e9cf61e2837b6b595f5f53c8933069ef0dc87 |
Variantes e medições brutas
Compilação SFC
| Variante |
Mediana (ms) |
Execuções (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 |
Compilação de SFC grande
| Variante |
Mediana (ms) |
Execuções (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 |
Tipos em SFC grande
| Variante |
Mediana (ms) |
Execuções (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
| Variante |
Mediana (ms) |
Execuções (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 |
| Variante |
Mediana (ms) |
Execuções (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 |
Verificação de tipos
| Variante |
Mediana (ms) |
Execuções (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 |
Build Vite
| Variante |
Mediana (ms) |
Execuções (ms) |
| @vitejs/plugin-vue |
1656.557 |
1656.557, 1600.439, 1730.685 |
| @vizejs/vite-plugin |
889.18 |
889.18, 881.988, 947.765 |
Build Nuxt
| Variante |
Mediana (ms) |
Execuções (ms) |
| Nuxt default compiler |
3067.515 |
3083.42, 3067.515, 3057.014 |
| @vizejs/nuxt |
3213.326 |
3259.084, 3213.326, 3176.535 |
Musea
| Variante |
Mediana (ms) |
Execuções (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 |