Node.js gcloud模块加载缓慢
我正在使用Node.js gcloud模块加载缓慢,node.js,performance,gcloud-node,Node.js,Performance,Gcloud Node,我正在使用gcloudnodejs模块。每当我进行更改时,nodeJS将重新加载(使用nodemon),它必须加载所有依赖项。一切都很快,除了gcloud。仅加载该模块需要相当长的时间(如10-20秒) 我所做的只是: console.log('Loading gCloud Module'); var gcloud = require('gcloud'); console.log('Done.'); 为什么呢?我正在运行nodejs4.1.1。gcloud-0.21.0。我用以下代码尝试了此功
gcloud
nodejs模块。每当我进行更改时,nodeJS将重新加载(使用nodemon),它必须加载所有依赖项。一切都很快,除了gcloud
。仅加载该模块需要相当长的时间(如10-20秒)
我所做的只是:
console.log('Loading gCloud Module');
var gcloud = require('gcloud');
console.log('Done.');
为什么呢?我正在运行nodejs4.1.1。gcloud-0.21.0。我用以下代码尝试了此功能:
> node
console.time(); require('gcloud'); console.timeEnd();
第一次运行时,我得到了将近10秒的时间。每次之后,我都得到大约900ms-2.5s。我尝试了各种gcloud版本,以及节点版本,并收到了一些细微的差异
我开始深入研究什么样的依赖性花费的时间最多。我找到了各种线索:googleautoauth
大约需要375ms。但实际上,这是一种依赖googleauth库节点js
,占用370毫秒的时间。所以我深入研究了它,发现它的依赖性gtoken
大约需要366ms。它的一个依赖项,node forge
,需要120毫秒,另一个依赖项占用了其余大部分时间
基本上,由于gcloud有如此多的依赖项,它必须解决许多syncrequire
s问题,这意味着需要遍历文件系统并一直阻塞。如果没有模块化,对于这样一个规模和范围的库,我不确定能做些什么,从而对启动时间产生巨大的影响
运行npm重复数据消除
可能会产生一点不同
如果你一直看到10-20秒,那很有趣。你能分享更多关于脚本运行系统的信息吗?您能尝试升级到最新的gcloud(0.23)吗?我用以下代码尝试了这一点:
> node
console.time(); require('gcloud'); console.timeEnd();
第一次运行时,我得到了将近10秒的时间。每次之后,我都得到大约900ms-2.5s。我尝试了各种gcloud版本,以及节点版本,并收到了一些细微的差异
我开始深入研究什么样的依赖性花费的时间最多。我找到了各种线索:googleautoauth
大约需要375ms。但实际上,这是一种依赖googleauth库节点js
,占用370毫秒的时间。所以我深入研究了它,发现它的依赖性gtoken
大约需要366ms。它的一个依赖项,node forge
,需要120毫秒,另一个依赖项占用了其余大部分时间
基本上,由于gcloud有如此多的依赖项,它必须解决许多syncrequire
s问题,这意味着需要遍历文件系统并一直阻塞。如果没有模块化,对于这样一个规模和范围的库,我不确定能做些什么,从而对启动时间产生巨大的影响
运行npm重复数据消除
可能会产生一点不同
如果你一直看到10-20秒,那很有趣。你能分享更多关于脚本运行系统的信息吗?您能否尝试升级到最新的gcloud(0.23)?谢谢Stephen的回答。我在一个虚拟机中运行Ubuntu14.04,这个虚拟机是通过vagrant创建的。我的主机是Windows10。我的nodejs应用程序文件夹位于windows中,与Ubuntu VM共享。我将检查是否需要在非共享文件夹上花费这么多时间。谢谢Stephen的回答。我在一个虚拟机中运行Ubuntu14.04,这个虚拟机是通过vagrant创建的。我的主机是Windows10。我的nodejs应用程序文件夹位于windows中,与Ubuntu VM共享。我将检查是否需要在非共享文件夹上花费这么多时间。