R 中的内存分析 - 总结工具

发布于 2024-10-20 11:07:11 字数 608 浏览 8 评论 0原文

R 有一些用于内存分析的工具,例如带有选项 "memory.profiling=TRUE"Rprofmem()Rprof()跟踪内存()。最后一个只能用于对象,因此对于跟踪对象被复制的次数很有用,但没有给出函数基础上的概述。 Rprofmem 应该能够做到这一点,但即使是像 lm() 这样最简单的函数调用的输出也会给出超过 500 行日志。我试图弄清楚 Rprof("somefile.log",memory.profile=T) 实际上做了什么,但我认为我并没有真正理解它。

我能找到的最后一个是 Thomas Lumley 的这条消息,这么说,我引用 :

我还没有工具来总结输出。

那是在 2006 年。现在有机会可以根据 Rprofmem()Rprof() 与内存的神秘输出)进行一些不错的摘要。 profile 设置 TRUE 或任何其他工具?

R has some tools for memory profiling, like Rprofmem(), Rprof() with option "memory.profiling=TRUE" and tracemem(). The last one can only be used on objects, and hence is useful to follow how many times an object is copied, but doesn't give an overview on a function basis. Rprofmem should be able to do that, but the output of even the simplest function call like lm() gives over 500 lines of log. I tried to figure out what Rprof("somefile.log",memory.profile=T) actually does, but I don't think I really get it.

The last I could find was this message of Thomas Lumley, saying that, and I quote :

I do not yet have tools to summarize the output.

This was in 2006. Any chance there are options for some nice summaries now, based on either Rprofmem(), the mysterious output of Rprof() with memory.profile set TRUE or any other tool?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

半岛未凉 2024-10-27 11:07:11

profvis 看起来像是这个问题的解决方案问题。

它生成一个交互式 .html 文件(使用 htmlwidgets),显示代码的分析。

简介小插图是对其功能的很好的指导。

直接从介绍中获取,您可以像这样使用它:

devtools::install_github("rstudio/profvis")
library(profvis)

# Generate data
times <- 4e5
cols <- 150
data <- as.data.frame(x = matrix(rnorm(times * cols, mean = 5), ncol = cols))
data <- cbind(id = paste0("g", seq_len(times)), data)
profvis({
    data1 <- data   # Store in another variable for this run

    # Get column means
    means <- apply(data1[, names(data1) != "id"], 2, mean)

    # Subtract mean from each column
    for (i in seq_along(means)) {
        data1[, names(data1) != "id"][, i] <- data1[, names(data1) != "id"][, i] - means[i]
    }
}, height = "400px")

其中给出

在此处输入图像描述

profvis looks like the the solution to this question.

It generates an interactive .html file (using htmlwidgets) showing the profiling of your code.

The introduction vignette is a good guide on its capability.

Taking directly from the introduction, you would use it like this:

devtools::install_github("rstudio/profvis")
library(profvis)

# Generate data
times <- 4e5
cols <- 150
data <- as.data.frame(x = matrix(rnorm(times * cols, mean = 5), ncol = cols))
data <- cbind(id = paste0("g", seq_len(times)), data)
profvis({
    data1 <- data   # Store in another variable for this run

    # Get column means
    means <- apply(data1[, names(data1) != "id"], 2, mean)

    # Subtract mean from each column
    for (i in seq_along(means)) {
        data1[, names(data1) != "id"][, i] <- data1[, names(data1) != "id"][, i] - means[i]
    }
}, height = "400px")

Which gives

enter image description here

滥情哥ㄟ 2024-10-27 11:07:11

查看 profr —— 它看起来正是您要找的。

Check out profr -- it seems like exactly what you're looking for.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文