对于R Shiny Web应用程序,运行代码分析的哪些好方法可以显示处理时间最长的Shiny代码部分?
我有一个大而肥胖,复杂的Shiny应用程序,而且我想弄清楚在这个迷宫代码的哪个地方,我正在减慢我的Shiny应用程序。我已经试过Rprof和profr,但没有从他们那里得到太多的了解。
一些(粗略的)想法:
我认为这个问题需要稍微更新一下,因此我要添加另一个答案......
您也可以使用profvis
软件包来分析闪亮的应用程序。它将直接为您的R代码提供火焰图。即无需使用Chrome的火焰图并猜测瓶颈在哪里。您将确切知道更改代码的位置。
这是怎么做的:
以下添加了某些步骤的详细信息:
第1步:运行profvis
library(profvis)
profvis({ runApp('directory_of_shiny_app') }
, prof_output = '/directory_to_save_profile')
第5步:加载您的个人资料
profvis(prof_input = '/path_to_save_output/random_name.Rprof')
注: Profvis为您的文件提供随机名称。因此,您需要相应地更改输入路径
第6步:转换为HTML
如果您有一个巨大的应用程序并且火焰图表变得更长一点,则可能需要此步骤。您可能会收到错误“Pandoc:... memory”
p <- profvis(prof_input = '/path_to_save_output/file108f93bff877b.Rprof')
htmlwidgets::saveWidget(p, "/path_to_save_output/profile.html")
然后在浏览器中打开html文件。
根据我的经验:
mydebug <- function(msg="[DEBUG]") {
DEBUG <- FALSE
if (DEBUG) {
print(sprintf("%s - %s - %s", msg1, as.character(Sys.time()), as.character(deparse(sys.calls()[[sys.nframe()-1]]))))
}
}
f
你可以获得一个火焰来找出花费的时间(例如,哪个JS功能?是否由于布局?)。