node.js - gcloud 模块加载缓慢

标签 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。

最佳答案

我用以下代码尝试了这一点:

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

我第一次运行它时,花了将近 10 秒。之后每次,我都会得到大约 900ms-2.5s 的时间。我尝试了各种 gcloud 版本以及 Node 版本,并收到了细微的差异。

我开始深入研究哪些特定的依赖项花费了最多的时间。我发现了各种线索:google-auto-auth 大约需要 375 毫秒。但实际上,这是一种依赖; google-auth-library-nodejs 占用了 370 毫秒的时间。因此我深入研究并发现其依赖项 gtoken 大约需要 366 毫秒。 依赖项之一 node-forge 需要 120 毫秒,而另一个依赖项则占用了大部分时间。

基本上,由于 gcloud 有如此多的依赖项,它必须解决许多同步require,这意味着遍历文件系统并始终阻塞。如果不进行模块化,对于其规模和范围的库,我不确定可以做什么来对启动时间产生巨大的影响。

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

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

关于node.js - gcloud 模块加载缓慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32897794/

相关文章:

node.js - 将 jwt 暴露给客户端可能会导致安全问题

javascript - Mongodb Node.js 通过动态键查找值

node.js - gcloud pubsub - 如何创建监视请求

html - 通过传递参数运行 Node.js

javascript - NodeJS SQL登录错误(ERR_HTTP_HEADERS_SENT] : Cannot set headers after they are sent to the client)

在运行时编译常量

performance - F#中的返回字符串和代码优化

python - 使用 `loc` 进行 Pandas bool 选择并不总是更快?

node.js - GCloud VM 实例未启动 Node 应用程序

node.js - 在 gcloud 上调试 Node 应用程序以修复 500 服务器错误