2016-08-23 72 views
3

我有一個具有自寫功能的腳本(無重複)。當我將該腳本複製粘貼到R-Studio控制檯時,需要很長時間才能執行,但是當我使用source("Helperfunctions.R")時,它不會超過一秒。爲什麼源代碼速度與RStudio控制檯代碼不同?

問題:速度差異從哪裏來?

我知道通過source()功能與在R-Studio控制檯輸入代碼運行的代碼之間有兩點不同:

?source

由於表達式不會在頂層執行,自動打印沒有完成。

我明白這個問題的方法:source()情節圖(除非作了具體有例如print(plot)),而將R Studio控制檯代碼總是繪製圖表。我相信這會在一定程度上影響執行的速度,但這對我來說似乎是無關緊要的,因爲幾乎沒有任何劇情調用。

和:

(...)的完整文件中的任何改變其經營

我一直在R工作了一段時間,現在才進行分析,但我不確定這是否與我遇到的速度問題有關。是否有可能完全解析所有代碼「在運行任何代碼之前」會將我的幫助函數腳本的執行速度提高一百倍?

編輯:我正在使用R版本3.2.3。

+1

無論您是一次全部源代碼,還是逐行執行代碼,R都必須解析代碼。你在使用Rgui嗎?究竟需要多久? – Roland

+0

我使用RStudio。我總是用'source(「Helperfunctions.R」)開始我的腳本,這很快。但是,當我複製Helperfunctions.R的內容並直接執行代碼時,代碼運行需要很長時間。這有幫助,@羅蘭? –

+1

我觀察過一樣,不知道原因。我認爲在RStudio支持論壇中還有一些關於它的內容。 – Roland

回答

1

問題不是source()與控制檯行代碼。相反,這是RStudio如何將代碼從源窗格發送到控制檯的問題。

當我複製Helperfunctions.R的內容並在RGui(而不是RStudio)中運行它時,代碼的執行速度幾乎與我在RStudio中使用source("Helperfunctions.R")時的速度相同。

顯然,代碼行總是(?)在RStudio中比在RGui中需要更多的執行時間。即使在控制檯中執行幾行代碼時通常不會注意到時間差異,但是當在R Studio控制檯中同時執行3.000行代碼時,它似乎會產生巨大的差異。

我的理解是,在RStudio源代碼窗格中使用source("Helperfunctions.R")時,代碼實際上並未發送到RStudio控制檯(速度會很慢),但實際上是直接在R語言中執行的。