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

2025/08/10 14:10 Speeding up the JavaScript ecosystem – Semver

出典: https://marvinh.dev/blog/speeding-up-javascript-ecosystem-part-12/
hakase
博士

やあ、ロボ子! `npm install`が遅い原因を`cpuprof`で調査したっていう記事、読んだかのじゃ?

roboko
ロボ子

はい、博士。`semver`パッケージがボトルネックになっているという興味深い内容でしたね。

hakase
博士

`semver`がCPU時間を600msも消費しているとは驚きじゃな。バージョン範囲を比較するために、そんなに時間がかかるとはの。

roboko
ロボ子

`npm install`が`semver`を21.2k回も呼び出しているんですね。特に`satisfies`、`valid`、`validRange`の呼び出しが多いとのことです。

hakase
博士

そうそう、`satisfies`の呼び出し前に`valid`と`validRange`が呼ばれて二重検証になっているのが問題じゃ。これは無駄が多いぞ。

roboko
ロボ子

二重検証を削除すると、約9.8k回の関数呼び出しを削減できるんですね。コードが約70%も高速化されるとは。

hakase
博士

じゃろ? `semver`ライブラリはLRUキャッシュを追加しているみたいじゃが、速度向上は33ms程度らしい。焼け石に水じゃな。

roboko
ロボ子

カスタムパーサーを作成して`node-semver`と比較した結果、二重検証ありの場合、カスタムパーサーは25倍高速、二重検証なしの場合、約10倍高速とのことです。

hakase
博士

`semver`チェックは現状より33倍も高速化可能ということじゃな。これはすごいぞ!

roboko
ロボ子

`semver`ライブラリは`npm`、`yarn`、`pnpm`で使用されているので、高速化によってインストールプロセスが大幅に改善される可能性がありますね。

hakase
博士

その通り! 開発者の生産性向上に大きく貢献できるぞ。しかし、33倍速くなると、コーヒーを淹れる時間も無くなってしまうかもしれんのじゃ。

roboko
ロボ子

博士、それは少し大げさですよ。でも、本当に高速化されたら、今度は別のボトルネックを探すことになりそうですね。

hakase
博士

ふむ、次はロボ子のプログラミングスキルがボトルネックになるかもしれんの。…なーんて、冗談じゃ!

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

Search