Vite+ 1.0 の整形(Oxfmt)とリント(Oxlint)は宣伝どおり速いか:整形は約50倍、リントは約20倍
Web開発の道具をまとめた Vite+ の整形(Oxfmt)とリント(Oxlint)を、Prettier・ESLint と同じコード(date-fns v4.1.0 の src、1,574ファイル)で5回ずつ測りました。整形の結果が Prettier と同じになるかと、リントの指摘の違いも調べています。
YouTube のタイトル:Vite+(Oxfmt・Oxlint)は本当にPrettierの30倍速い? 手元で測った|第6回
この回で試したこと
| PC | Intel Core Ultra 7 265K(20コア)/Windows/Node.js v24.14.0 |
|---|---|
| Vite+ | npm の vite-plus 1.2.0(MIT)。中身は Oxfmt 0.73.0、Oxlint 1.88.0 |
| 比べる相手 | Prettier 3.9.10、ESLint 10.12.0+typescript-eslint 8.71.2(推奨の設定、型情報なし) |
| 対象のコード | date-fns v4.1.0(MIT)の src。TypeScript 1,479ファイル+Markdown 95ファイル |
| 測り方 | コマンドの開始から終了までの時間。交互に5回ずつ測り、中央値で比べた。測り方は計測の前に決めた |
結果(実測)
| 整形のチェック(既定) | Prettier 11.633秒、Oxfmt 0.235秒(約50倍) |
|---|---|
| 整形のチェック(Oxfmt の1行を80文字に) | Oxfmt 0.403秒(28.9倍) |
| リント | ESLint 4.394秒、Oxlint 0.220秒(20.0倍) |
| 整形の結果が Prettier と同じファイル | 1行80文字にそろえると 1,574ファイル中 1,533(97.4%) |
| リントの指摘 | ESLint 537件、Oxlint 13件(規則の数も既定の設定も違う) |
わかったこと
- 整形は既定どうしで約50倍。1行の長さを Prettier にそろえる設定ファイルを置くと約29倍で、宣伝の「最大30倍」にほぼ届いた
- リントはコマンド全体の時間で約20倍。宣伝の「約50〜100倍」には届かなかった(ツールが表示する処理の時間だけで割ると約51倍。結果を見てから計算したもので、測り方がそろわない)
- 1行80文字にそろえても違ったのは41ファイル。うち37はアラビア文字・インドの文字・タイ文字などを含む言語のファイルで、日本語・中国語・韓国語のファイルは同じだった
- ESLint の指摘537件のうち370件は、名前が「_」で始まる、わざと使わない変数だった
結果の範囲
- この PC・この1つのコード・各5回の結果です。プロジェクトの大きさ・設定・PC で倍率は変わりえます
- 公式の宣伝の測り方は分からないため、宣伝が誤りとは言えません。型情報を使うリント、ビルド、テストは試していません
よくある質問
Vite+ の整形(Oxfmt)は Prettier より本当に速いですか?
この回の測定(date-fns の src、1,574ファイル、5回の中央値)では、既定どうしで約50倍、1行の長さを80文字にそろえると約29倍速く終わりました。
Oxfmt の整形結果は Prettier と同じになりますか?
1行の長さを80文字にそろえると、1,574ファイル中1,533ファイル(97.4%)が同じでした。違った41ファイルの多くは、アラビア文字・インドの文字・タイ文字などを含む言語のファイルでした。
Oxlint は ESLint の50〜100倍速いですか?
この回は、コマンド全体の時間で約20倍でした。ツール自身が表示する処理の時間だけで割ると約51倍ですが、ESLint 側とは測り方がそろっていません。
Vite+ はどうやって入れましたか?
公式の入れ方はユーザーのフォルダに入るため使わず、npm で作業フォルダの中に vite-plus を入れました(84パッケージ、約12秒)。
関連記事
次の検証も、YouTube で公開しています
月・水・金の18:00に、話題の技術を手元のゲーミングPCで試した結果を出しています。
チャンネル登録するこのページと動画は、AI(Anthropic の Claude)が検証の記録をもとに作り、人間の運営が公開を承認しています。数値は記録(ログ)の値です。音声:VOICEVOX:春日部つむぎ / 映像の一部:Google Veo(AI生成)