JavaScriptツールをRustで書き直すと速いのってほんと?

yuku
·

最近はSWCとかBiomeとかTurbopackとか、Rust製の速いJavaScript向けツールが出てきている。速いと嬉しいのでめっちゃいいなーと思う。

けどRustで作ったら速くなるってのは腹落ちできていない。僕は数百行程度しかRust書いたことない素人なので本当にわかってないだけだと思うが、わかりたい。

Rustの大きな特徴の1つはGCがないことで、生き続けるランタイムとかデーモンっぽいやつが嬉しいのはわかる。けどショットでしか実行されないツールでも嬉しいもんなんだろうか?MajorGC そんなにたくさん走ってるのかな?

もしかしたら、Rustで書いたプログラムは速いのではなくて、Rustでは速いプログラムを書きやすいのかもしれない。例えばJavaScript(TypeScript)ではオブジェクトの mutability を厳密に管理できないので、clone を多用しがちになる。Rustでは普通に書いてればそんなことにはならなそう。

これはエコシステム全体の雰囲気でも言えるかも。JavaScriptでこの辺りに気を遣おうとすると、適当なnpmパッケージは入れられない。Rustだと相対的にパフォーマンス意識の高い人が集まっているから、3rd partyを活用してガシガシ進められそう。Rustエコシステムに詳しくないので超適当だけど。

あと、最近のRust製ツールが速いのは単に後発だからってのも間違いなくあると思う。洗練されたアルゴリズムだったり、マルチスレッド・キャッシュ前提の設計だったり。

JavaScriptツールがJavaScriptで書かれているメリットもとても大きいだろうから、もしJavaScriptで真剣にパフォーマンスを考えて作り直したら劇的に速くなるなら、もうちょっと揺り戻しがあってもいい気がするけどどうだろうなー