为什么源速度与RStudio控制台线路代码不同?

时间:2016-08-23 08:59:57

标签: r rstudio

我有一个带有自编函数的脚本(没有绘图)。当我将该脚本复制粘贴到R-Studio控制台时,执行需要很长时间,但是当我使用source()时,它不会花费超过一秒的时间。

问题:速度的差异来自哪里?

我知道通过?source功能运行代码与在R-Studio控制台输入代码之间存在两个区别:

来自source()

  

由于表达式未在顶层执行,因此不会进行自动打印。

我理解这一点的方式:print(plot)绘制图表(除非特定于R),而R Studio控制台代码总是绘制图表。我确定这会在一定程度上影响执行速度,但这在我的情况下似乎无关紧要,因为几乎没有任何情节调用。

  

(...)在运行任何文件之前解析完整的文件

我已经与{{1}}合作了一段时间,但我不确定这是否与我所拥有的速度问题相关。是否有可能在运行任何代码之前完全解析所有代码""加速我的助手函数脚本执行一百倍?

修改:我使用的是R版本3.2.3。

1 个答案:

答案 0 :(得分:6)

问题不是source()与控制台行代码。相反,它是RStudio如何将代码从源窗格发送到控制台的问题。

当我复制Helperfunctions.R的内容并在RGui(而不是RStudio)中运行时,代码的执行速度几乎与我在RStudio中使用source("Helperfunctions.R")时的速度相同。

显然,代码行总是(?)在RStudio中需要比在RGui中更多的执行时间。即使您在控制台中执行几行时通常不会注意到时差,但在R Studio控制台中同时执行3.000行代码时,似乎会产生巨大的差异。

我的理解是,在RStudio源代码窗格中使用source("Helperfunctions.R")后,代码实际上并没有发送到RStudio控制台(速度很慢),而是直接在R中执行语言。