utils:::readCitationFile拖慢Shiny App的排查与优化求助
关于Shiny App面板渲染卡顿及
utils:::readCitationFile耗时异常的优化经验 我开发了一款Shiny App,其中一个面板渲染耗时极长,正在寻求优化方案。我使用
profvis对App进行性能分析,但不知后续如何处理。从分析结果来看,耗时最长的环节是utils:::readCitationFile,仅该函数就占了面板创建15秒时长的一半。但我的代码中并未显式调用该函数,推测可能是某个包的默认调用所致。由于涉及机密数据,无法提供可复现示例,请问是否有人遇到过类似问题并知道解决方法?
已验证的优化步骤(问题已解决)
在清理代码并尝试制作可复现示例的过程中,通过以下改动解决了卡顿问题,分享出来供参考:
- 添加
req()函数:App中部分关键响应式对象在求值前未调用req(),添加后App速度显著提升,utils:::readCitationFile的“疑似耗时”也随之减少。建议系统性使用req()来控制响应式对象的求值时机,避免不必要的计算触发。 - 调整
RcppRoll的使用范围:原本在包含3年12个月数据(约250行)的数据框上使用RcppRoll::cumsum()和RcppRoll::roll_sum(),但实际业务场景仅需2年数据。缩减数据范围后,性能提升效果最明显,不过因同时做了其他修改,暂无法确认是否是RcppRoll本身存在性能瓶颈。
目前仍未明确utils:::readCitationFile耗时异常的具体根因,后续若找到确切原因并制作出可复现示例会补充说明。
内容的提问来源于stack exchange,提问作者EnisKarra
相关产品推荐
相关产品推荐

