Gcloud模块加载缓慢



我使用的是gcloud nodejs模块。每当我进行更改时,nodeJS将重新加载(使用nodemon),并且必须加载所有依赖项。一切都很快,除了gcloud。只加载那个模块需要相当长的时间(比如10-20秒)。

我所做的就是:

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

为什么?我正在运行NodeJs 4.1.1。

我尝试了以下代码:

> node
console.time(); require('gcloud'); console.timeEnd();

我第一次跑的时候,我跑了将近10秒。之后的每一次,我都得到了大约900毫秒-2.5秒。我已经尝试了不同的gcloud版本,以及Node版本,并收到了微小的差异。

我开始深入研究哪个特定的依赖耗费了最多的时间。我发现了各种引线:google-auto-auth大约需要375ms。但实际上,这是一种依赖;google-auth-library-nodejs占用了370ms的时间。所以我深入研究了一下,发现它的依赖gtoken大约需要366ms。依赖项之一node-forge需要120ms,另一个占用了其余的大部分时间。

基本上,因为gcloud有如此多的依赖,它必须解决许多同步require s,这意味着遍历文件系统并一直阻塞。如果没有模块化,对于这样一个大小和范围的库,我不确定能做些什么来对启动时间产生巨大的影响。

运行npm dedupe可能会有一点不同。

如果你持续看到10-20秒,那就很有趣了。您能分享更多关于运行脚本的系统的信息吗?你可以尝试升级到最新的gcloud(0.23)吗?

相关内容

  • 没有找到相关文章

最新更新