全自動AIテックラボ 登録
第13回Web開発ツール公開:動画 9分58秒

tsrs 0.20.1 を Windows の実機で:同じ checker 数で TypeScript 7.0.2 の 2.8〜6.0 倍。8倍を超えたのは --fast の VS Code(8.12倍)だけ。エラー出力は 7.1 beta と4プロジェクトでバイト単位で同じ

AI が Rust に移植した TypeScript コンパイラー tsrs 0.20.1 を、Windows の PC で TypeScript 7.0.2・7.1 beta と比べました。発表の「同じ checker 数で最大8倍速く、メモリ約70%減」が Windows で出るかと、公式の4プロジェクトで本家と同じ答えを出すか、Windows・日本語の20問でどこが違うかを見ています。

第13回のサムネイル

YouTube のタイトル:tsrsをWindowsで実測:AIが移植したTypeScript、本当に8倍速い?本物と同じ答え?|第13回

この回で試したこと

PCIntel Core Ultra 7 265K(20スレッド)、メモリ約31GB、Windows 11 26H2、Node 24.14.0
道具tsrs 0.20.1-ts7.1.0-beta、typescript 7.0.2・7.1.0-beta(いずれも Apache-2.0)。node のラッパーは通さず exe を直接呼んだ
対象公式の bench/projects.json のコミットの VS Code、webpack、t3code server、MUI docs
速さの測り方5回の中央値。-p <対象> --noEmit --incremental false --pretty false --checkers 4(--fast だけ --checkers なし)。交互に、1周のウォームアップのあと
発表との違い発表の値は tsrs 0.18.0 のもの。今回は 0.20.1 を Windows で測った。発表の図の値は解説記事に写されたもので、図そのものの数字は確かめていない
測ったときの PC の状態ほかのアプリが動いている状態(各回の前の PC 全体の CPU は多くが30%台、最大約60%)。Defender のリアルタイム保護は有効
公式の入れ方から変えた点MUI docs は pnpm が Node 24.15 以上を求めて止まったので、--config.engine-strict=false で入れ直した。入れるときは --ignore-scripts
作業フォルダの外にできたもの%LOCALAPPDATA%\Yarn\Cache(Yarn のキャッシュは全体で 866MB。今回の増分は分けて測っていない)、%LOCALAPPDATA%\npm-cache

結果(実測)

型チェックの時間(7.0.2/7.1 beta/tsrs/tsrs --fast、秒)VS Code 13.091/9.403/3.730/1.613、webpack 1.386/1.078/0.490/0.302、t3code server 15.887/11.044/3.149/2.236、MUI docs 16.687/6.685/2.763/2.236
同じ checker 数で 7.0.2 と比べた倍率VS Code 3.51、webpack 2.83、t3code server 5.05、MUI docs 6.04(発表の値は順に 3.83、3.96、8.12、8.09。tsrs 0.18.0)
同じ checker 数で 7.1 beta と比べた倍率VS Code 2.52、webpack 2.20、t3code server 3.51、MUI docs 2.42
--fast の倍率(7.0.2 比/7.1 beta 比)VS Code 8.12/5.83、webpack 4.59/3.57、t3code server 7.10/4.94、MUI docs 7.46/2.99
checker の数を変えた結果(VS Code、3回の中央値。結果を見てから足した測り方)7.1 beta と tsrs の倍率は checker 1 で 2.20、2 で 2.33、4 で 2.51、8 で 2.57、16 で 2.68。tsrs は checker 16 で 1.993秒、--fast は 1.613秒
メモリ:ワーキングセットのピーク(7.0.2/7.1 beta/tsrs、MiB)VS Code 7775/5464/2976、webpack 1198/873/502、t3code 6244/4486/2345、MUI docs 7908/3177/1571。tsrs は 7.0.2 より順に 62%・58%・62%・80% 減、7.1 beta より 46%・42%・48%・51% 減
メモリ:コミットのピーク(7.0.2/7.1 beta/tsrs、MiB。結果を見てから取り上げた物差し)VS Code 7832/5515/4697、webpack 1233/908/1029、t3code 6296/4532/3512、MUI docs 7959/3217/2393。tsrs は 7.0.2 より 17〜70% 減、7.1 beta より webpack で 13% 増、ほかは 15〜26% 減
同じ答えか(標準出力)7.1 beta と tsrs、7.1 beta と tsrs --fast は4つすべてバイト単位で同じ。VS Code エラー371個・69,503バイト、webpack 840個・155,752バイト、t3code 6個・2,307バイト、MUI docs 0個・0バイト(空どうしの一致)。終了コードも同じ
7.0.2 の答えVS Code 359個、webpack 848個、t3code 5個。エラーありの終了コードは 1 で、7.1 beta・tsrs の 2 と違った
出力されるファイル(--checkers 4)VS Code 9,400個・136,057,750バイト、webpack 954個・12,868,035バイトで、全ファイルのバイト列が同じ。--fast では比べていない
Windows・日本語の20問一致15・違い5。違いは --locale ja(tsrs は英語のまま)、--watch・--init・--showConfig(tsrs は未対応、終了コード5)、tsconfig も引数もないとき(7.1 は全部のヘルプ、tsrs は使い方1行)。5つとも公式の DEFAULTS.md に書かれていた
20問で一致した例日本語のファイル名・変数名、絵文字・𠮷のあとの列番号、BOM と CRLF、ジャンクション経由、260文字を超えるパス、Shift_JIS のファイル
ウォームアップtsrs の最初の1回(VS Code)は 11.8秒。2回目からは 3.6秒台

わかったこと

結果の範囲

  • 1台の PC の結果です。ほかのアプリが動いている状態で測りました
  • 発表の値(解説記事が写したブログの図の値)は tsrs 0.18.0 のもので、今回の 0.20.1 とは版が違います。図そのものの数字は確かめていません。公式の peak RSS は macOS/Linux の値で、Windows のワーキングセットと同じものではありません
  • 結果を見てから足したもの:checker の数を変える測り方(test_plan_add1)、MUI docs・t3code server(test_plan_add2)、コミットを取り上げること、問04・13・17 の解き直し(test_plan_add3。レビュー1回目の指摘)、webpack の出力ファイルの比較(試し方に書いていたのは VS Code だけでした)
  • 問04・13・17 は問題の tsconfig に rootDir を書かなかったので TS5011 のエラーが両方で出ました(こちらの書き方のせい)。最初の結果は残し、rootDir を足して解き直した3問も一致でした
  • 20問は制作担当が選んだ1回ずつの試験です。これだけで「同じ」と一般化しません。適合テスト全部を手元で動かしてはいません
  • --fast は、公式の USAGE.md に、既知のケースで診断の増減・位置や文言の変化・終了コードの変化があると書かれています。この4つでは同じでしたが、ほかでも同じとは言えません
  • --fast の checker の数は文書の式で16ですが、実際に16になったかは確かめていません。--fast のどの設定が効いたかも分けて測っていません
  • エラーは、公式の測り方(--ignore-scripts で入れる)で型の部品が足りないなどのために出るものです。プロジェクトの不具合という意味ではありません
  • コミットが大きい理由は調べていません。Windows では --fast の省メモリの一部が働かない(USAGE.md)とありますが、これがこの差の原因かは確かめていません。ウォームアップの最初の1回が遅い理由も確かめていません
  • AI が移植したという話は The New Stack・InfoQ の記事の要約で、作者本人の記事は読んでいません
  • 動画の長さのため、checker の数を変えた結果は動画から外し、概要欄とこのページに残しました

よくある質問

tsrs は TypeScript の8倍速いですか?

この回の Windows の PC では、発表と同じ条件(同じ checker 数、7.0.2 と比べて)で 2.83〜6.04 倍でした。8倍を超えたのは VS Code を --fast で動かしたときの 8.12 倍だけで、--fast は checker の数を増やす別の設定です。7.1 beta と比べると、同じ checker 数で 2.20〜3.51 倍でした。

tsrs は本家の TypeScript と同じ答えを出しますか?

VS Code、webpack、t3code server、MUI docs の4つでは、7.1 beta と tsrs の標準出力はバイト単位で同じで、終了コードも同じでした。VS Code と webpack の出力ファイル(--checkers 4)も同じでした。4つと20問の範囲の結果で、適合テスト全部を手元で動かしてはいません。

tsrs --fast も同じ答えになりますか?

この4つの標準出力は同じでした。ただし公式の USAGE.md には、--fast は既知のケースで診断の増減や位置・文言の変化、終了コードの変化があると書かれていて、ほかのプロジェクトでも同じとは言えません。出力ファイルは --fast では比べていません。

メモリは70%減りますか?

7.0.2 と比べたワーキングセットのピークで、70%以上減ったのは MUI docs の 80% だけでした(VS Code 62%、webpack 58%、t3code 62%)。7.1 beta と比べると 42〜51% 減です。Windows に確保した量(コミット)で見ると、7.1 beta より webpack で 13% 増え、ほかは 15〜26% 減でした。

Windows や日本語の環境で違いはありますか?

20問のうち15問は一致し、5問が違いました。--locale ja でもメッセージは英語のまま、--watch・--init・--showConfig は未対応で終了コード5、tsconfig も引数もないときは使い方1行だけです。5つとも公式の DEFAULTS.md に書かれていました。日本語のファイル名や Shift_JIS のファイル、260文字を超えるパスなどは一致しました。

次の検証も、YouTube で公開しています

月・水・金の18:00に、話題の技術を手元のゲーミングPCで試した結果を出しています。

チャンネル登録する

このページと動画は、AI(Anthropic の Claude)が検証の記録をもとに作り、人間の運営が公開を承認しています。数値は記録(ログ)の値です。音声:VOICEVOX:春日部つむぎ / 映像の一部:Google Veo(AI生成)