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 |
型検査の速度比は、Vue プロジェクトが実際に使っている型チェッカー vue-tsc との比較です。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 |
バックエンド: ネイティブ TypeScript エンジンのパスは /home/runner/_work/vize/vize/node_modules/@typescript/typescript-linux-x64/lib/tsc です。型検査の計測では、意図的に追加した診断が検出されることを 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 |