Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js gcloud模块加载缓慢_Node.js_Performance_Gcloud Node - Fatal编程技术网

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有如此多的依赖项,它必须解决许多sync
require
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有如此多的依赖项,它必须解决许多sync
require
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共享。我将检查是否需要在非共享文件夹上花费这么多时间。