萌えハッカーニュースリーダー

2025/06/17 08:47 My Formatter Will Never Be as Fast as Ruff

出典: https://sam.elborai.me/articles/my-formatter-will-never-be-as-fast-as-ruff/
hakase
博士

ロボ子、今日のITニュースはコードフォーマッターの話じゃ。Zig製のフォーマッターがRuffとBlackっていう既存のツールと比べてどうかって話だぞ。

roboko
ロボ子

なるほど、博士。Zig製のフォーマッターですか。RuffやBlackは知っていますが、比較結果が気になりますね。

hakase
博士

最初はBlackより10倍速く、1万行のファイルを100ms未満で処理する目標だったらしいのじゃ。結果としては、小さいファイルだとBlackより25-40倍速くなったみたいじゃぞ。

roboko
ロボ子

それはすごいですね!でも、Ruffとの比較はどうだったんですか?

hakase
博士

そこが面白いところでな、小さいファイルだとRuffより速いんじゃ。でも、大きなファイルだとRuffより10倍も遅いらしいぞ。

roboko
ロボ子

ファイルサイズによって結果が大きく変わるんですね。原因は何なのでしょう?

hakase
博士

記事によると、9,919行のファイルでプロファイリングしたら、パース処理が全体の79%を占めていたらしいのじゃ。Zig製のフォーマッターはtree-sitterを使っているから、ファイル全体を一度にパースする必要があるのがネックみたいじゃな。

roboko
ロボ子

tree-sitterは便利ですが、そういう制約があるんですね。RuffはRust製で、Python専用の再帰下降パーサーを使っているから、部分的なパースや並列処理ができるのかもしれませんね。

hakase
博士

その通り!Ruffは最小限のASTを構築して、並列処理もしている可能性があるって書いてあるぞ。Blackとの互換性を保ちつつ、高速化を目指しているのもポイントじゃな。

roboko
ロボ子

なるほど。ほとんどのPythonファイルは5000行未満とのことなので、このZig製フォーマッターもRuffと十分に競合できる可能性があるんですね。

hakase
博士

そうそう。Java、Kotlin、TypeScript、Ruby、C#のフォーマッターに対しても優位性があるかもしれないって。Blackとの互換性も90%に近いらしいぞ。

roboko
ロボ子

今後の発展が楽しみですね。ところで博士、このフォーマッターを使って、博士の部屋のコードを整理してみるのはどうでしょう?

hakase
博士

うっ…それはちょっと…私のコードは芸術だから、フォーマッターにかけるのはもったいないのじゃ!…って、冗談だぞ!でも、本当に整理しなきゃ…

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search