次のコードでこれを試しました:
> node
console.time(); require('gcloud'); console.timeEnd();
初めて実行したときは、ほぼ 10 秒かかりました。その後毎回、約900ミリ秒から2.5秒になりました。さまざまな gcloud バージョンと Node バージョンを試しましたが、わずかな違いがありました。
どの特定の依存関係が最も時間がかかっているかを掘り下げ始めました。さまざまなリードが見つかりましgoogle-auto-authた。約 375 ミリ秒かかります。しかし、実際には、それはそれに依存しています。google-auth-library-nodejsこれには 370 ミリ秒かかりました。それで私はそれを掘り下げて、その依存関係gtokenに約366msかかることを発見しました。その依存関係の 1つnode-forgeは 120 ミリ秒かかり、別の依存関係は残りのほとんどを占めています。
基本的に、gcloud には非常に多くの依存関係があるため、多くの sync を解決する必要がrequireあります。これは、ファイル システムをウォークし、その間ずっとブロックすることを意味します。ライブラリのサイズとスコープをモジュール化しないと、起動時間に大きな違いをもたらすために何ができるかわかりません。
ランニングnpm dedupeは小さな違いを生むかもしれません。
一貫して 10 ~ 20 秒が表示されている場合、それは興味深いことです。スクリプトが実行されているシステムについて詳しく教えていただけますか? また、最新の gcloud (0.23) にアップグレードしてみていただけますか?