Shiny app的代码分析?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Shiny app的代码分析?相关的知识,希望对你有一定的参考价值。
对于R Shiny Web应用程序,运行代码分析的哪些好方法可以显示处理时间最长的Shiny代码部分?
我有一个大而肥胖,复杂的Shiny应用程序,而且我想弄清楚在这个迷宫代码的哪个地方,我正在减慢我的Shiny应用程序。我已经试过Rprof和profr,但没有从他们那里得到太多的了解。
一些(粗略的)想法:
- 在浏览器中分析应用程序可能会有所帮助。我有一个使用navbarPage的大应用程序,页面构建速度变慢。在Chrome中使用分析(开发者工具)确定了“罪魁祸首”。修复/改进正在进行中https://github.com/rstudio/shiny/issues/381#issuecomment-33750794
- 从应用程序的代码窗口运行探查器。使用shinyAce包(https://github.com/trestletech/shinyAce)我可以编辑(和运行)代码,包括应用程序内的分析器(即呼叫反应等)。见下面的链接(R>代码)。请注意,代码评估在服务器上已停用,但如果要尝试此操作,则应用程序的源代码位于github上(请参阅关于页面)
- 将代码写入由无功函数调用的常规R函数中。我正在重写我的应用程序,以便它可以使用knitr进行“可重复研究”(R> Report)。这种重组使得在不启动应用程序的情况下更容易使用R(studio)的分析库。
- Rselenium是Selenium的R接口,是网络应用程序的测试工具(https://github.com/johndharrison/RSelenium)。我刚刚开始使用它,但你也许可以使用像system.time这样的东西来比较不同组件的速度。
http://vnijs.rady.ucsd.edu:3838/marketing/
我认为这个问题需要稍微更新一下,因此我要添加另一个答案......
您也可以使用profvis
软件包来分析闪亮的应用程序。它将直接为您的R代码提供火焰图。即无需使用Chrome的火焰图并猜测瓶颈在哪里。您将确切知道更改代码的位置。
这是怎么做的:
- 通过Profvis运行闪亮的应用程序
- 与您的闪亮应用互动
- 关闭浏览器
- 通过停止按钮停止控制台
- 加载配置文件
- 如果步骤5失败,请尝试以下操作:如果需要,转换为html(内存问题)
以下添加了某些步骤的详细信息:
第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文件。
根据我的经验:
- 函数中的插件print()您可以找出大多数时间占用的函数。例如:
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
- 使用Chrome火焰图来分析
你可以获得一个火焰来找出花费的时间(例如,哪个JS功能?是否由于布局?)。
以上是关于Shiny app的代码分析?的主要内容,如果未能解决你的问题,请参考以下文章