问题标签 [profvis]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
23 浏览

r - Profvis 上的错误:没有可用的数据框

我试图了解为什么我的应用程序如此缓慢并且我使用 Profvis 知道,但我有一个错误说我用于我的应用程序的数据集不可用......

有人有想法吗?我是唯一一个在我周围使用 Rshiny 的人,这很难 ;)

非常感谢

0 投票
2 回答
95 浏览

r - 在 r 中 RAM 和速度的平衡方面优化栅格到数据框功能

问题

我正在尝试使用一个模型,该模型需要我将非常大的 rasterStacks(大约 1000 万个单元)转换为 data.frame,我在共享服务器上执行此操作,因此,我正在尝试优化以减少使用了 RAM,希望不会大大降低速度。为此,我编写了 2 个函数,但没有成功。带有我尝试结果的 RPUBS 位于此链接中,带有 rmd 的 github 位于此处,包括用于 profvis 分析的 rds 文件。

第一个功能

首先让我们加载我们需要的包:

平铺

减少 RAM 使用的主要方法不是处理一个大栅格,而是将其转换为平铺栅格,为此我开发了以下功能:

我的想法是,如果您分别处理每个图块,则可以一个一个地转换为数据帧,并取出带有 NA 的行,从而减少 RAM 使用量。

该函数有 3 个参数:

  • 光栅:你想分成瓷砖的堆栈
  • ppside:你最终会得到的水平和垂直瓷砖的数量,最终的瓷砖数量将是 ppside*ppside,所以如果 ppside 为 3,你将有 9 个瓷砖
  • nclus:您将用于并行化和加速处理的集群数量。

在此函数结束时,您将拥有ppside*ppside多个切片,保存在您的工作目录中,所有这些都称为SplitRasN.tif其中 N 是切片的编号。作为示例,我们将使用 raster 包中可用的生物气候变量:

我将对此进行测试,将其转换为不同数量的图块,如下图所示

在此处输入图像描述

从栅格转换为切片,然后从切片转换为数据框(示例)

所以首先我们将使用SplitRas函数来获得使用 4 个核心的 16 个图块:

这将返回以下文件:r list.files(pattern = "SplitRas")

为了将这些图块放入一个包含所有非 NA 单元格的数据帧中,我们需要一个图块列表,我们可以通过以下方式获得:

我们可以在以下函数中使用它:

其中Splits是具有图块路径的字符向量,ncores是用于并行化的核心数。这将导致具有非空单元格的数据框。

内存基准测试(我尝试过的)

首先,我为 1、2、4、8、10 和 12 ppsides 生成了 Tiles

然后仅使用函数的顺序选项来分析函数

然而,如下图所示(更多细节可以在上面链接的 Rpubs 中找到),RAM 或多或少与以前相同,但时间变长了(最后一部分是预期的)。

在此处输入图像描述.

一些额外的东西

最后,当我尝试并行对 RAM 使用进行基准测试时,似乎 profvis 没有捕捉到这一点。关于如何检查的任何想法?

在此处输入图像描述

0 投票
0 回答
27 浏览

r - source("filename") 和 R-Studio 中的源按钮之间有区别吗

source("filename")与仅在 R-Studio 中单击“源”相比,通过获取文件时我遇到了不同的行为。具体来说,profvis({function(arguments)})仅当包含函数的脚本通过source("filename"). 如果使用“源”按钮,profvis({function(arguments)})则只显示function(arguments)整体花费的时间,甚至不显示函数的代码(这不是真的有用)。我想知道这两种获取文件的方式之间是否存在细微差别,因为我一直认为它们是相同的。

0 投票
0 回答
93 浏览

r - 如何找出 RAM 中有多少内存分配给我闪亮的应用程序

我有一个使用闪亮仪表板包制作的应用程序。它具有三个脚本:ui.R、server.R 和 global.R。一年来,这个应用程序已经毫无问题地托管在 shinyapps.io 上。但是,它确实使用 API 从 Amazon Web 服务中的数据库中提取数据。随着时间的推移,数据不断增长,最终我的应用程序超过了免费帐户允许的 1GB RAM 内存。我收到错误消息,“正常退出,代码 137,信号 9 (SIGKILL)”。我查看了shinyapps.io 中的日志,我看到它说:“内存不足!”。我决定简化我的应用程序并大大减少使用 API 导入的数据量,但是我仍然遇到同样的错误。

我决定使用该程序包profvis来分析我的应用程序并查看运行缓慢的内容以及需要大量内存分配的内容,但我无法准确告诉我的应用程序分配了多少内存。

这是火焰图的图像在此处输入图像描述

这是数据部分在此处输入图像描述

我是否理解我正在做的所有合并都是在我的应用程序中占用最多时间的事情?此外,在查看数据部分时,它说 profvis 行分配了 1251.1 MB 的内存。这是否意味着这是我的应用程序所需的内存总量?

0 投票
0 回答
55 浏览

r - 提高 profvis 性能以分析闪亮的应用程序

我有一个非常大且复杂的 R Shiny 应用程序,我正在尝试找到瓶颈或部分代码以通过profvis包进行改进。问题是它profvis本身的执行速度非常慢(因为我闪亮的应用程序中的流程和功能),因此它滞后并且几乎无法正确查看和导航配置文件或火焰图。
通过 R 或浏览器启动profvis配置文件(firefox 和 chrome 测试)在这里并没有太大的区别。
我只在我的闪亮应用程序中测试一个(主要)功能/计算,该应用程序由一个操作按钮启动,因此我无法真正测试更少的功能或使配置文件“更短”。

任何帮助或提示表示赞赏。尤其是跑得profvis更快的方法。我尝试的另一个选择是只将我的部分代码包装在闪亮的应用程序中profvis,但我没有找到完成这项工作的方法。

谢谢!

0 投票
0 回答
46 浏览

r - 使用 profvis 包时如何解决错误

今天我profvis从识别需要更多时间的命令中了解了使我的代码更快的包。包提供的示例(https://rstudio.github.io/profvis/)我可以正常运行,但是当我在我的代码中尝试时,没有任何反应,它出现:(Sources not available)。所以我想知道,我做错了什么?

在此处输入图像描述