精華區beta R_Language 關於我們 聯絡資訊
[問題類型]: 效能諮詢:關於直譯式語言的註解,影響效能的程度! [軟體熟悉度]: 入門(寫過其他程式,只是對語法不熟悉) [問題敘述]: 我有一個需要最佳化的程式碼,為了讓程式碼更清晰,必需要註解。 最佳化的目標是函式,函式裡面有註解。 我的問題是,加入註解是否會影響程式碼的效能? 還是R有機制會把函式的註解去掉? google大神沒有告訴我答案,可能關鍵字有錯>< [程式範例]: fTest <- function(a){ # do nothing } fTest2<- function(a){ } # 兩個會有差別嗎? [關鍵字]: 效能、註解 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 49.216.194.114 ※ 編輯: obarisk 來自: 49.216.194.114 (04/15 12:05)
Wush978:如果效能是你關心的問題,那就使用cmpfun 04/15 15:26
Wush978:記得先library(compiler) 04/15 15:26
Wush978:它會把函數編譯成byte code,註解的影響應該很小 04/15 15:26
Chris7462:同樓上。註解影響應該不大,畢竟 R 是直譯式的語言 04/15 16:06
Wush978:另外如果你真的希望程式碼能重複使用的話,最好的方法是包 04/15 16:17
Wush978:成R package。現在有Rstudio和roxygen2的支援,包package 04/15 16:17
Wush978:和寫文件很簡單。 04/15 16:17
obarisk:感謝啦。直譯式註解才會影響!只是感覺影響不太! 04/15 19:53
> -------------------------------------------------------------------------- < 作者: andrew43 (apan) 看板: R_Language 標題: Re: [問題] 註解和效能 時間: Mon Apr 15 15:31:16 2013 我不是很確定答案, 但提供你幾個測試. 你都跑跑看大概就知道了. 記得按esc還是ctrl+c中斷 1. 不斷跑 5+5 while(T) { t1<-Sys.time() for (a in 1:10000) {eval(parse(text="5+5"))} t2<-Sys.time() cat(t2-t1, "(s)\n") } 2. 不斷跑 #5+5 while(T) { t1<-Sys.time() for (a in 1:10000) {eval(parse(text="#5+5"))} t2<-Sys.time() cat(t2-t1, "(s)\n") } 3. 不斷跑空白鍵 while(T) { t1<-Sys.time() for (a in 1:10000) {eval(parse(text=" "))} t2<-Sys.time() cat(t2-t1, "(s)\n") } 4. 不斷什麼事都沒做 while(T) { t1<-Sys.time() for (a in 1:10000) {} t2<-Sys.time() cat(t2-t1, "(s)\n") } 我的結果是: 測試 4 最快, 測試 2 和 3 就慢了且是幾乎一致, 而測試 1 只再慢一點點而已! 結論: 是的, R 對註解很可能沒什麼特別的增加效率作用, 直譯器嘛別太計較了. ※ 引述《obarisk (OSWALT)》之銘言: : [問題類型]: : 效能諮詢:關於直譯式語言的註解,影響效能的程度! : [軟體熟悉度]: : 入門(寫過其他程式,只是對語法不熟悉) : [問題敘述]: : 我有一個需要最佳化的程式碼,為了讓程式碼更清晰,必需要註解。 : 最佳化的目標是函式,函式裡面有註解。 : 我的問題是,加入註解是否會影響程式碼的效能? : 還是R有機制會把函式的註解去掉? : google大神沒有告訴我答案,可能關鍵字有錯>< : [程式範例]: : : fTest <- function(a){ : # do nothing : } : fTest2<- function(a){ : } : # 兩個會有差別嗎? : : [關鍵字]: : 效能、註解 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.128.117.73
obarisk:看來有註解還是會比較慢,只是差異很小而已 04/15 19:55
obarisk:謝謝你的回覆,我試試complier看看 04/15 19:55
andrew43:應該是差蠻大 (拿4和2比). 完美的情況下4和2要一樣啊. 04/15 21:13
andrew43:不過直譯大多是這樣的吧 04/15 21:13
obarisk:對啊><我應該要去check用compiler後的效能 04/16 12:17
obarisk:測了一下,有沒有註解真的差很少 04/17 11:32
andrew43:了解了 04/17 21:03
obarisk:而且compile不影響有無comment的時間@@ 04/19 18:47
obarisk:R到底是怎麼搞定的呢,真有趣。 04/19 18:48