看板 R_Language 關於我們 聯絡資訊
還蠻讓我驚訝的,原來不能亂加 nrow(x),要也得寫dim(x)[1]... XD [關鍵字]: R speed [出處]: https://goo.gl/EhqsYZ [重點摘要]: 如果我沒會錯意,意思大概是 R 在決定是否在記憶體中複製一份物件,是依靠指向該物件的reference count是否增加 若增加,下一次的賦值便會執行copy後再賦值 nrow(x) 雖然底層是呼叫dim 但因為是function 所以reference to x 會增加 直接呼叫dim 是 R primitive 則不會... 如果呼叫nrow 下一步改變x中的值則會執行一次copy... 照範例code執行 並用tracemem, pryr::refs()看的確如此... (若有誤解,請指正,謝謝!) 原文中範例使用nrow(), dim()[1] 在我電腦上跑,速度也是天差地遠... 這實在太雷了,以前並未注意,不知道各位還有沒有踩過什麼效能"雷"?^^ -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.112.65.48 ※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1513043882.A.69C.html
andrew43: 感謝分享。 12/12 14:01
F0011010101: 謝謝分享 12/12 19:49