首页 > 解决方案 > renv::restore() 非常慢

问题描述

我是renv第一次尝试这个包。

我拿了一个我用 packrat 管理的现有项目,删除了 .Rprofile 和 packrat 目录(我很高兴从头开始)

我使用选项添加了一个本地工作存储库,然后运行 ​​renv::init()。这发现了一个完整的依赖项列表(138 个 CRAN 包、10 个工作包和一个 github 安装包)

然后我将该文件夹复制到另一台计算机,将 RENV_PATHS_SOURCE 更改为该系统上全局可用的内容,然后转到项目目录,启动 R,它告诉我它不同步并要求我运行状态。我做了,看起来不错,报告了一堆需要安装的库。然后我跑了 renv::restore()

然后它正确列出了所有依赖项,然后继续安装它们。

这真的很慢。

我坐在这里等待,看到新的 tarball 被列出来,而且最多需要一整分钟来获取每个 tarball。但更典型的情况是每个时间在 1-2 分钟范围内。

这很奇怪,因为它们被列为在 0.2-0.7 秒内下载。嗅探网络接口证实了这一点。短时间内会有大量的包进来,每个新的 tarball 都列出来,看起来它们可以与报告的花费时间相匹配。

在所有这些过程中,R cpu 使用率在 0.0% 和 1.0% 之间波动。

那么 renv 在做什么呢?

所以对于一个不是特别复杂的项目,它包含 180 个包,我会等待 3 个小时来获取 tarball?那他们自己应该只需要0.5秒吗?这将成为一个问题。就我个人而言,我坚持从 Packrat 迁移,直到这个问题得到解决或理解。

但是 renv 在做什么或在等待什么?据我所知,没有网络活动,没有 cpu 使用,没有 iowait(查看顶部输出)。

标签: rrenv

解决方案


推荐阅读