You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

更新R与R Studio后,M1 Max设备上Rmarkdown运行远慢于R脚本

问题描述

在M1 Max设备上更新到最新版R和RStudio后,出现R Markdown运行代码的速度远慢于常规R脚本的问题,具体表现为:

  • 仅在加载大量数据(如本次测试的3GB数据)时出现性能差异,无大数据加载时两者性能相近;
  • 某段代码在R脚本与R Markdown中的耗时对比:
    R脚本耗时:
    usersystemElapsed
    0.4370.0370.490
    R Markdown耗时:
    usersystemElapsed
    21.8200.43125.243
  • 加载tidyverse后运行以下测试代码,R脚本耗时0.02736592秒,R Markdown耗时2.401871秒:
start_time <- Sys.time()

mpg %>% 
  mutate(age = if_else(year > 2000, "New", "Old")) %>% 
  group_by(age) %>% 
  summarize(cyl = mean(cyl, na.rm = TRUE))

Sys.time() - start_time

已尝试卸载重装rmarkdown包、重装R、RStudio和Anaconda,问题仍未解决。

可能的解决方案
  • 关闭R Markdown自动预览功能:RStudio的实时预览会在代码运行后自动渲染输出,处理大数据时额外消耗资源。打开R Markdown文档后,点击右上角「Preview」旁的下拉菜单,选择「Disable Auto Preview」,再重新运行代码测试。
  • 优化代码块chunk选项:给代码块添加cache=TRUE缓存计算结果,避免重复执行;同时关闭不必要的输出(如echo=FALSE)减少渲染负担,示例:
```{r, cache=TRUE, echo=FALSE}
# 你的业务代码
- **用Rosetta 2模式运行RStudio**:Apple Silicon架构下部分R包可能存在适配问题,右键点击应用程序中的RStudio,选择「显示简介」,勾选「使用Rosetta打开」,重启后测试性能。
- **手动管理内存**:在代码运行前后调用`gc()`触发垃圾回收,释放内存空间:
```r
start_time <- Sys.time()
gc() # 运行前清理内存
mpg %>% 
  mutate(age = if_else(year > 2000, "New", "Old")) %>% 
  group_by(age) %>% 
  summarize(cyl = mean(cyl, na.rm = TRUE))
gc() # 运行后清理内存
Sys.time() - start_time
  • 更新/切换knitr版本:knitr是R Markdown的核心渲染包,尝试安装开发版:
install.packages("devtools")
devtools::install_github("yihui/knitr")

或回退到稳定版,排查是否为版本兼容性问题。

  • 切换到系统默认R环境:避免Anaconda环境干扰,打开RStudio的「Tools」→「Global Options」→「R Version」,选择系统原生安装的R版本(而非Anaconda提供的R)。

内容的提问来源于stack exchange,提问作者Sarab

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 16:20:23