編輯:更新感謝@ daroczig下面的可愛答案。然而,測試2仍然覺得比測試1需要更長的時間,這是我想知道的。我的system.time包裝函數有問題嗎?
更新:在二讀時,@ daroczig的答案確實解釋了我的困惑 - 問題是由於我沒有正確地思考system.time(expr)代碼行。
我想作一個版本的system.time
功能這將是對自己更豐富一點在理解方面運行到運行時間的波動:
system.time.summary <- function(N, expr) {
t.mat <- replicate(N, system.time(expr))
as.data.frame(apply(t.mat[1:3,], 1, summary))
}
然而問題是,在自我包含的代碼如下,test.2
感覺喜歡它比test.1
需要更長的時間(並且我已經運行了幾次來檢查),即使代碼幾乎完全相同(test.1
使用包裝函數,而test.2
只是原始代碼)
# set up number of runs
N <- 100
# test 1
system.time.summary(N, (1:1e8)^2 + 1)
user.self sys.self elapsed
Min. 0.000 0.000 0.000
1st Qu. 0.000 0.000 0.000
Median 0.000 0.000 0.000
Mean 0.058 0.031 0.089
3rd Qu. 0.000 0.000 0.000
Max. 0.580 0.310 0.890
# test 2
t.mat = replicate(N, system.time((1:1e8)^2 + 1))
as.data.frame(apply(t.mat[1:3,], 1, summary))
user.self sys.self elapsed
Min. 0.630 0.120 0.860
1st Qu. 0.665 0.170 0.880
Median 0.695 0.195 0.880
Mean 0.692 0.196 0.882
3rd Qu. 0.715 0.225 0.890
Max. 0.760 0.260 0.900
我希望我解釋一下OK!這可能是因爲它是目前星期一早上,但這是混淆了我...
我的系統:
# Windows Server 2008 R2
> sessionInfo()
R version 2.12.0 (2010-10-15)
Platform: x86_64-pc-mingw32/x64 (64-bit)
掛起,你的意思是說我基本上可以在R裏面調試嗎?我不知道!有多少R在那裏,我不知道... – 2011-02-28 14:08:54
@Tony:如果你不知道,那麼現在是時候看看:?traceback,?debug,?debugonce,?瀏覽器和http ://stackoverflow.com/questions/1882734/what-is-your-favorite-r-debugging-trick(加上你在網站上使用'[r] debug'作爲搜索條件找到的所有其他人)享受:-) – 2011-02-28 14:11:46
爲伴侶歡呼,看起來像我將不得不抽時間閱讀所有這些非常有趣和非常有用的功能,我從未聽說過! :) – 2011-02-28 14:27:01