[分享] nrow, references and copies

看板R_Language作者 (cywhale)時間8年前 (2017/12/12 09:58), 編輯推噓2(200)
留言2則, 2人參與, 8年前最新討論串1/1
還蠻讓我驚訝的,原來不能亂加 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

12/12 14:01, 8年前 , 1F
感謝分享。
12/12 14:01, 1F

12/12 19:49, 8年前 , 2F
謝謝分享
12/12 19:49, 2F
文章代碼(AID): #1QBpUgQS (R_Language)
文章代碼(AID): #1QBpUgQS (R_Language)