gcloud模块加载速度很慢

时间:2015-10-01 22:25:56

标签: node.js performance gcloud-node

我正在使用gcloud nodejs模块。每当我进行更改时,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。

1 个答案:

答案 0 :(得分:0)

我用以下代码尝试了这个:

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

我第一次跑它,差不多10秒钟。每次之后,我都得到了大约900ms-2.5s。我尝试了各种gcloud版本以及Node版本,并且收到了微小的差异。

我开始深入研究特定依赖关系花费的时间。我找到了各种线索:google-auto-auth需要大约375毫秒。但实际上,这是对它的依赖; google-auth-library-nodejs占用了370毫秒的时间。所以我挖到了它,发现它的依赖gtoken需要大约366ms。其中一个依赖项node-forge需要120毫秒,另一个需要大部分时间。

基本上,因为gcloud有很多依赖项,所以它必须解析许多同步require,这意味着遍历文件系统并一直阻塞。没有模块化,对于其大小和范围的库,我不确定可以做些什么会对启动时间产生巨大影响。

运行npm dedupe可能会产生一些小的差异。

如果你一直看到10-20秒,这很有意思。你能分享一下运行脚本的系统吗?你能尝试升级到最新的gcloud(0.23)吗?