1

gcloudnodejs モジュールを使用しています。変更を加えるたびに、nodeJS が (nodemon を使用して) リロードされ、すべての依存関係をロードする必要があります。の場合を除いて、すべてが高速gcloudです。そのモジュールだけをロードするには、かなりの時間 (10 ~ 20 秒など) がかかります。

私がしたことは次のとおりです。

console.log('Loading gCloud Module');
var gcloud = require('gcloud');
console.log('Done.');

何故ですか?NodeJs 4.1.1 を実行しています。gcloud - 0.21.0。

4

1 に答える 1

0

次のコードでこれを試しました:

> 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) にアップグレードしてみていただけますか?

于 2015-10-03T01:04:08.737 に答える