[問題] 把物件存成.RData會比較快嗎?(shinyapp)

作者: locka (locka)   2019-03-14 22:06:52
[問題類型]:
意見調查(我對R 有個很棒的想法,想問問大家的意見)
效能諮詢(我想讓R 跑更快)
[軟體熟悉度]:
使用者(已經有用R 做過不少作品)
[問題敘述]:
各位版友好,想請問大家開發 shinyapp 的時候會先把資料存成 .RData 再讀取嗎?
例如讀取外部檔案:
原本是在 runApp() 的時候執行 data <- read.csv("xxx.csv")
改成先用 save(data, file="data.RData") 存成 .RData
這樣 runApp() 的時候直接執行 load("data.RData")
又或者, 我有些物件是用 lapply 函數做成的
一樣先存成 .RData 執行 app 的時候直接 load
這樣就不用每次執行程式都要跑一次 lapply 函數
理論上這樣應該會比較快...嗎?
更明確的說,當部屬到 shinyapps.io 上的時候,這樣會不會比較快
不曉得有沒有高手可以指點一下,或是分享自己的經驗。
謝謝!
[關鍵字]:
shiny, shinyapps.io, RData
作者: celestialgod (天)   2019-03-14 22:33:00
我覺得就depends on哪個讀取快耶
作者: celestialgod (天)   2019-03-15 01:18:00
那應該是feather最快
作者: locka (locka)   2019-03-14 23:43:00
不管是 lapply(), read.csv() 還是 load() 都是寫在 global.R 裡喔,我只是在思考前兩者的速度跟後者的速度誰快誰慢??
作者: cywhale (cywhale)   2019-03-14 23:12:00
如涉傳輸就難說了,我都在自架server,not shinyapps.io
作者: locka (locka)   2019-03-14 23:19:00
即便是自架server,run的時候也是要傳輸不是嗎?
作者: celestialgod (天)   2019-03-14 23:35:00
寫在global.R 就會只要讀一次不就好了嗎?
作者: locka (locka)   2019-03-14 22:48:00
請問有什麼方法可以協助我判斷讀取時間嗎?好像不能單從檔案大小來看,我不太曉得shiny讀取外部檔案跟執行函式有沒有用什麼可能會是瓶頸的方式,比方說如果讀取外部.RData是用streaming的方式讀取,那一定就會很慢吧…可是又覺得執行函式要多做計算很浪費資源…不如事先算好再讀取就好…抱歉,回覆的有點亂
作者: cywhale (cywhale)   2019-03-14 22:44:00
可以直接測看看時間啊,如果運算很複雜當然load RData快
作者: jack155861 (蕭)   2019-03-17 20:48:00
Feather 比 csv txt rdata SQLite 快
作者: locka (locka)   2019-03-17 22:42:00
感謝兩位分享,第一次聽到 feather 來研究看看!
作者: cywhale (cywhale)   2019-03-18 22:28:00
如果可以接受binary格式,feather, fst都可試看看

Links booklink

Contact Us: admin [ a t ] ucptt.com