我用以下代码尝试了这个:
> 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 有这么多的依赖,它必须解析很多 sync require
,这意味着遍历文件系统并一直阻塞。如果没有模块化,对于它的大小和范围的库,我不确定可以做什么会对启动时间产生巨大的影响。
跑步npm dedupe
可能会产生很小的影响。
如果你一直看到 10-20 秒,那很有趣。你能分享更多关于脚本运行的系统吗?您可以尝试升级到最新的 gcloud (0.23) 吗?